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


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

fin.flush();

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

6 90

6 ответов:

С docs на flush способ:

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

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

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

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

мы должны быть уверены, что все записи завершены, прежде чем мы закроем поток, и именно поэтому flush() вызывается в File/buffered writer's close().

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

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

в BufferedWriter класс, который помещается в Java libs, есть одна строка, как:

private static int defaultCharBufferSize = 8192;

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

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

страницы:453

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

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