Функция readBytes

Функция readBytes читает все содержимое файла и возвращает его в виде массива байтов типа ByteArray. Эта функция удобна для работы с бинарными файлами, такими как изображения, исполняемые файлы и другие не текстовые данные.

Импорт

kotlinimport java.io.File

Синтаксис

kotlinfun File.readBytes(): ByteArray

Пример

Прочитаем содержимое файла data.bin в массив байтов:

kotlinval file = File("data.bin")
val bytes: ByteArray = file.readBytes()
println("File size: " + bytes.size + " bytes")

Результат выполнения кода:

kotlinFile size: 1024 bytes

Пример

Прочитаем содержимое файла и преобразуем байты в шестнадцатеричную строку:

kotlinval file = File("data.bin")
val bytes = file.readBytes()
val hexString = bytes.joinToString("") { "%02x".format(it) }
println("Hex content: " + hexString)

Результат выполнения кода:

kotlinHex content: 48656c6c6f20576f726c64

Пример

Обработаем возможное исключение при чтении файла:

kotlintry {
  val file = File("nonexistent.bin")
  val bytes = file.readBytes()
  println("Read " + bytes.size + " bytes")
} catch (e: Exception) {
  println("Error reading file: " + e.message)
}

Результат выполнения кода:

kotlinError reading file: nonexistent.bin (No such file or directory)

Пример

Сравним содержимое двух файлов побайтово:

kotlinval file1 = File("file1.bin")
val file2 = File("file2.bin")

val bytes1 = file1.readBytes()
val bytes2 = file2.readBytes()

val areEqual = bytes1.contentEquals(bytes2)
println("Files are identical: " + areEqual)

Результат выполнения кода:

kotlinFiles are identical: true

Примечания

Функция readBytes загружает весь файл в память, поэтому для очень больших файлов рекомендуется использовать потоковое чтение с помощью inputStream или bufferedReader.

При чтении файла может возникнуть исключение IOException, если файл не существует, недоступен для чтения или произошла другая ошибка ввода-вывода.

Смотрите также

  • функцию readText,
    которая читает файл как текст
  • функцию writeBytes,
    которая записывает массив байтов в файл
  • функцию inputStream,
    которая предоставляет потоковый доступ к файлу
  • класс File,
    который представляет файл или директорию