Вы можете указать конструктору BufferedOutputStream
параметр int для размера буфера. В моем сценарии у меня есть один процесс записи на диск и процесс чтения с диска. Наличие буфера по умолчанию в 8192 байта вызывает высокую фрагментацию больших файлов.
Теперь мне было интересно, смогу ли я уменьшить фрагментацию, если подниму размер буфера до 1 Мб.
Я думаю, это должно сработать. Но уважает ли BufferedOutputStream
мой буфер, если я всегда вызываю BufferedOutputStream.write(smallBuffer,0,i); // i being smaller than 8192
я маленький, потому что ловлю маленькие пакеты (8192 байта) по сети. Но я хочу, чтобы BufferedOutputStream
действительно много буферизировал, а не решил сбросить раньше?
Является ли BufferedOutputStream
достаточно "глупым", чтобы дождаться заполнения буфера или вызова flush()
. Или у него установлен какой-то механизм промывки, основанный на времени?