У меня есть RandomAccessFile raFile
, из которого я читаю данные в буфер кусками фиксированного размера:
byte[] fileBuffer = new byte[BUFFER_SIZE];
while((readBytes = raFile.read(fileBuffer) >= 0) {
String bufferStr = new String(fileBuffer, 0, readBytes);
String testerStr = new String(fileBuffer);
System.out.println(readBytes+","+bufferStr.length()+","+testerStr.length());
}
Я ожидал, что raFile.read()
прочитает столько же байтов, сколько BUFFER_SIZE
(за исключением конца файла), и то же самое значение будет скопировано в readBytes
. Хотя это в основном верно, иногда я получаю следующие результаты для BUFFER_SIZE
из 4096:
readBytes
bufferStr
testerStr
4096 4092 4092
4096 4090 4090
4096 4094 4094
4096 4095 4095
Если считывается 4096 байт, почему длина bufferStr
и testerStr
меньше этого значения, даже если они находятся не в конце файла?
Ссылка: Это говорит о том, что read()
возвращает общее количество байтов, прочитанных в буфер.