В Java flush()
метод используется в потоках. Но я не понимаю, для чего вообще нужен этот метод?
fin.flush();
подскажите несколько предложений.
java
java-stream
flush
Venkat
источник
источник
Когда мы даем любую команду, потоки этой команды сохраняются в области памяти, называемой буфером (временная область памяти) на нашем компьютере. Когда вся временная область памяти заполнена, мы используем flush (), которая очищает все потоки данных и полностью их выполняет, а также дает новое пространство для новых потоков во временном расположении буфера. -Надеюсь, ты поймешь
источник
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
иPrintXXX
классы.flush()
Метод любого другого потока илиWriter
ничего не делает.flush()
Явный вызов a не требуетсяBufferedWriter
, если вы являетесьclose()
писателем.close()
сам выполняет сброс.close()
вызовыflush()
, поэтому оба вызова избыточны при использованииFileWriter
без буфера.Когда вы записываете данные в поток, они записываются не сразу, а буферизируются. Поэтому используйте,
flush()
когда вам нужно быть уверенным, что все ваши данные из буфера записаны.Мы должны быть уверены, что все записи завершены, прежде чем мы закроем поток, и поэтому
flush()
вызывается в файловой / буферизованной записиclose()
.Но если у вас есть требование, чтобы все ваши записи сохранялись в любое время перед закрытием потока, используйте
flush()
.источник
FilterOutputStream
иFilterWriter
.Если буфер заполнен, все строки, которые буферизированы в нем, будут сохранены на диск. Буферы используются, чтобы избежать больших сделок! и накладные расходы.
В классе BufferedWriter, который помещается в java libs, есть одна строка вроде:
справочник: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
страницы: 453
источник
К потокам часто обращаются потоки, которые периодически очищают свое содержимое и, например, отображают его на экране, отправляют в сокет или записывают в файл. Это сделано из соображений производительности. Очистка выходного потока означает, что вы хотите остановиться, дождаться, пока содержимое потока будет полностью передано по назначению, а затем возобновить выполнение с пустым потоком и отправленным содержимым.
источник
Что касается производительности, сначала данные должны быть записаны в буфер. Когда буфер заполняется, данные записываются в вывод (файл, консоль и т. Д.). Когда буфер частично заполнен и вы хотите отправить его на вывод (файл, консоль), вам необходимо вызвать метод flush () вручную, чтобы записать частично заполненный буфер на вывод (файл, консоль).
источник