Как BufferedOutputStream на самом деле работает на низком уровне?

Я понимаю теорию, лежащую в основе 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 для побайтовой записи

. Не могли бы вы прояснить, что на самом деле происходит и как это быстрее?

5
задан user1209776 15 February 2012 в 20:08
поделиться