чтение котлина из файла в байтовый массив - PullRequest
3 голосов
/ 29 марта 2019

Как мне прочитать байты в байтовом массиве? В Java я использовал для инициализации массива байтов byte[] b = new byte[100], а затем передать его в соответствующий метод. Однако в Kotlin я не могу инициализировать ByteArray с тем количеством байтов, которое должен иметь буфер.

Другими словами, как мне использовать эту функцию ?: https://developer.android.com/reference/kotlin/java/io/RandomAccessFile#read(kotlin.ByteArray)

1 Ответ

8 голосов
/ 29 марта 2019

Самый простой способ - использовать

File("aaa").readBytes()

, который прочитает весь файл в ByteArray.Но вы должны тщательно знать, что у вас достаточно оперативной памяти в куче, чтобы сделать это

ByteArray можно создать с помощью вызова ByteArray(100), где 100 - его размер

Для RandomAccessFile, это, вероятно, лучше использовать в функции readFully, которая читает именно запрошенное количество байтов.

Классический подход позволяет читать файл по частям, например,

    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)
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...