Я понимаю теорию, лежащую в основе BufferedOutputStream
. Байты записываются в буферный массив до его заполнения, а затем записываются (сбрасываются) в базовый поток - идея состоит в том, что это быстрее, чем запись побайтно, поскольку количество вызовов ОС меньше.
Однако, глядя на реализацию класса BufferedOutputStream
и методов ( BufferedOutputStream.java ), кажется, что в конечном итоге байты из буфера просто записываются побайтно. -байт.
Я думаю, это так, потому что:
В BufferedOutputStream.write (byte b [], int off, int len) есть строка out.write (b, off, len). Поскольку out является экземпляром OutputStream, но не BufferedOutputStream, он вызывает OutputStream.write (byte [], int, int). Это, в свою очередь, использует цикл for для побайтовой записи
. Не могли бы вы прояснить, что на самом деле происходит и как это быстрее?