Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
kotlin leyendo desde un archivo en una matriz de bytes

¿Cómo leo bytes en una matriz de bytes? En Java, solía inicializar la matriz de bytes como byte[] b = new byte[100] y luego pasar eso al método correspondiente. Sin embargo, en Kotlin, no puedo inicializar ByteArray con la cantidad de bytes que debe tener el búfer.

En otras palabras, ¿cómo uso esta función?: https://developer.android.com/reference/kotlin/java/io/RandomAccessFile#read(kotlin.ByteArray)

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La forma más fácil es usar

 File("aaa").readBytes()

Ese leerá el archivo completo en ByteArray . Pero debe saber cuidadosamente que tiene suficiente RAM en el montón para hacerlo

El ByteArray se puede crear a través de la llamada ByteArray(100) , donde 100 es su tamaño

Para RandomAccessFile , probablemente sea mejor usarlo en la función readFully , que lee exactamente la cantidad de bytes solicitada.

El enfoque clásico es posible leer un archivo por fragmentos, por ejemplo

 val buff = ByteArray(1230) File("aaa").inputStream().buffered().use { input -> while(true) { val sz = input.read(buff) if (sz <= 0) break ///at that point we have a sz bytes in the buff to process consumeArray(buff, 0, sz) } }
over 4 years ago · Santiago Trujillo Denunciar

0

Encontré que esto funcionó muy bien:

 fun File.chunkedSequence(chunk: Int): Sequence<ByteArray> { val input = this.inputStream().buffered() val buffer = ByteArray(chunk) return generateSequence { val red = input.read(buffer) if (red >= 0) buffer.copyOf(red) else { input.close() null } } }

Úsalo así.

 file.chunkedSequence(CHUNK_SIZE).forEach { // Do something with `it` }

No es una coincidencia exacta con su pregunta, pero esta es la pregunta que surgió cuando buscaba dividir un archivo en una secuencia de matrices de bytes.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda