Функция readBytes
Функция readBytes читает все содержимое файла
и возвращает его в виде массива байтов типа ByteArray.
Эта функция удобна для работы с бинарными файлами,
такими как изображения, исполняемые файлы и другие
не текстовые данные.
Импорт
import java.io.File
Синтаксис
fun File.readBytes(): ByteArray
Пример
Прочитаем содержимое файла data.bin
в массив байтов:
val file = File("data.bin")
val bytes: ByteArray = file.readBytes()
println("File size: " + bytes.size + " bytes")
Результат выполнения кода:
File size: 1024 bytes
Пример
Прочитаем содержимое файла и преобразуем байты в шестнадцатеричную строку:
val file = File("data.bin")
val bytes = file.readBytes()
val hexString = bytes.joinToString("") { "%02x".format(it) }
println("Hex content: " + hexString)
Результат выполнения кода:
Hex content: 48656c6c6f20576f726c64
Пример
Обработаем возможное исключение при чтении файла:
try {
val file = File("nonexistent.bin")
val bytes = file.readBytes()
println("Read " + bytes.size + " bytes")
} catch (e: Exception) {
println("Error reading file: " + e.message)
}
Результат выполнения кода:
Error reading file: nonexistent.bin (No such file or directory)
Пример
Сравним содержимое двух файлов побайтово:
val 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)
Результат выполнения кода:
Files are identical: true
Примечания
Функция readBytes загружает весь файл в память,
поэтому для очень больших файлов рекомендуется
использовать потоковое чтение с помощью
inputStream или bufferedReader.
При чтении файла может возникнуть исключение
IOException, если файл не существует,
недоступен для чтения или произошла другая
ошибка ввода-вывода.
Смотрите также
-
функцию
readText,
которая читает файл как текст -
функцию
writeBytes,
которая записывает массив байтов в файл -
функцию
inputStream,
которая предоставляет потоковый доступ к файлу -
класс
File,
который представляет файл или директорию