Java Копирование потока с использованием буферов одинакового размера - PullRequest
0 голосов
/ 14 апреля 2020

Со следующими логами c, используемыми для копирования файла с использованием потоков ввода / вывода. Действительно ли есть преимущество использования буферных потоков, поскольку он использует байтовый буфер одинакового размера?

int bufferSize = getDefaultBufferSize();
input = new BufferedInputStream(in, bufferSize);
output = new BufferedOutputStream(out, bufferSize);
byte[] buffer = new byte[bufferSize];
int numBytes = 0;
long totalBytes = 0L;
while ((numBytes = input.read(buffer)) != -1) {
    output.write(buffer, 0, numBytes);
    totalBytes += numBytes;
}
output.flush();

1 Ответ

1 голос
/ 14 апреля 2020

BufferedInputStream здесь не дает никакой выгоды.

С BufferedOutputStream это не так ясно. Базовое устройство вывода может поддерживать эффективную передачу блоков, которые больше, чем блоки, которые возвращает входной поток, поэтому удаление BufferedOutputStream может означать, что вы будете делать большее количество меньших записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...