Я пишу функцию распаковки для своего приложения на Kotlin, и чтобы сообщить о прогрессе, я буду делать это без copyTo, но через буфер. В примерах, которые я нахожу, всегда используется буфер размером 1024 байт. Есть ли какие-то особые причины сохранять его в этом размере или в определенных ситуациях целесообразно использовать меньший или больший размер?
Обновление: я не не знаю об использовании нескольких буферов. Один для извлечения и один для записи. В этом вопросе я имею в виду буфер записи. Вот мой код:
fun ZipEntry.extract(zipFile: ZipFile, newFile: File, progress: (BytesWritten) -> Unit) : BytesUnzipped {
var bytesUnzipped = 0L
zipFile.getInputStream(this).use { input ->
newFile.outputStream().use { output ->
val buffer = ByteArray(DEFAULT_BUFFER_SIZE)
var bytesRead: Int
while (input.read(buffer).also { bytesRead = it } > 0) {
output.write(buffer, 0, bytesRead)
bytesUnzipped += bytesRead
progress(BytesWritten(bytesRead))
}
}
}
return BytesUnzipped(bytesUnzipped)
}
@JvmInline
value class BytesWritten(val value: Int)
@JvmInline
value class BytesUnzipped(val value: Long)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -zip-files
Оптимальный размер буфера для записи на диск при распаковке ZIP-файлов ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение