Я понимаю теорию, стоящую за 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 для записи побайтно
Пожалуйста, кто-нибудь может уточнить, что на самом деле происходит и как это быстрее?