Вопрос-ответ

What is the purpose of flush() in Java streams?

Какова цель flush() в потоках Java?

В Java, flush() метод используется в потоках. Но я не понимаю, какова цель использования этого метода?

fin.flush();

подскажите мне несколько предложений.

Переведено автоматически
Ответ 1

Из документации по flush методу:


Очищает выходной поток и принудительно записывает все буферизованные выходные байты. Общий принцип flush заключается в том, что его вызов указывает на то, что, если какие-либо ранее записанные байты были буферизованы реализацией выходного потока, такие байты должны быть немедленно записаны по назначению.


Буферизация в основном выполняется для повышения производительности ввода-вывода. Подробнее об этом можно прочитать в этой статье: Настройка производительности ввода-вывода Java.

Ответ 2

Когда вы записываете данные в поток, они записываются не сразу, а буферизуются. Поэтому используйте flush(), когда вам нужно быть уверенным, что все ваши данные из буфера записаны.

Нам нужно быть уверенными, что все операции записи завершены до того, как мы закроем поток, и именно поэтому flush() вызывается в файле / буфере записи close().

Но если у вас есть требование, чтобы все ваши записи сохранялись в любое время перед закрытием потока, используйте flush().

Ответ 3

Когда мы даем какую-либо команду, потоки этой команды сохраняются в ячейке памяти, называемой buffer (ячейка временной памяти) на нашем компьютере. Когда вся временная ячейка памяти заполнена, мы используем flush (), которая очищает все потоки данных и выполняет их полностью, а также предоставляет новое пространство для новых потоков во временной ячейке буфера. -Надеюсь, вы поймете.

Ответ 4

Если буфер заполнен, все строки, которые в нем буферизованы, будут сохранены на диске. Буферы используются для предотвращения крупных сделок! и накладных расходов.

В классе BufferedWriter, который размещен в java libs, есть одна строка типа:

private static int defaultCharBufferSize = 8192;

Если вы действительно хотите отправить данные до заполнения буфера, у вас есть контроль. Просто сбросьте их. Вызывает writer .flush() говорит: "отправь все, что есть в буфере, сейчас же!


справочник: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208

страниц:453

java