В Java метод flush()
используется в потоках. Но я не понимаю, в чем цель использования этого метода?
fin.flush();
скажите мне несколько советов.
В Java метод flush()
используется в потоках. Но я не понимаю, в чем цель использования этого метода?
fin.flush();
скажите мне несколько советов.
Из docs метода flush
:
Сбрасывает выходной поток и заставляет записывать буферные выходные байты. Общий контракт флеша состоит в том, что вызов - это указание на то, что если какие-либо ранее записанные байты были буферизованы реализацией выходного потока, такие байты должны быть немедленно записаны в предназначенный им пункт назначения.
Буферизация в основном выполняется для улучшения производительности ввода-вывода. Подробнее об этом можно прочитать из этой статьи: Настройка производительности ввода-вывода Java.
когда мы даем какую-либо команду, потоки этой команды хранятся в ячейке памяти, называемой буфером (временная ячейка памяти) на нашем компьютере. Когда все временное место памяти заполнено, мы используем flush(), который сбрасывает все потоков данных и полностью их выполняет и дает новое пространство новым потокам в временном местоположении буфера -Надеюсь, вы поймете
Когда вы записываете данные в поток, он не записывается сразу и буферизуется. Поэтому используйте flush(), когда вам нужно убедиться, что все ваши данные из буфера записаны.
Мы должны быть уверены, что все записи завершены до закрытия потока, и именно поэтому flush() вызывается в файле/буферизованной записи close().
Но если у вас есть требование, чтобы все ваши записи были сохранены в любое время до закрытия потока, используйте команду flush()
Потоки часто обращаются к потокам, которые периодически пустят их содержимое и, например, отображают его на экране, отправляют в сокет или записывают в файл. Это делается по соображениям производительности. Сброс выходного потока означает, что вы хотите остановить, дождаться, когда содержимое потока будет полностью передано его адресату, а затем возобновить выполнение с пустым потоком и отправленным контентом.
Если буфер заполнен, все строки, буферизованные на нем, будут сохранены на диске. Буферы используются для избежания больших сделок! и накладные расходы.
В классе BufferedWriter, который помещается в java libs, существует одна строка, например:
private static int defaultCharBufferSize = 8192;
Если вы хотите отправить данные до заполнения буфера, у вас есть контроль. Просто промойте его. Звонки на writer.flush() говорят: "Теперь отправьте что-нибудь в буфере!
справочник: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
страниц: 453
Для обеспечения производительности первые данные должны быть записаны в буфер. Когда буфер заполняется, данные записываются на вывод (Файл, консоль и т.д.). Когда буфер частично заполнен, и вы хотите отправить его на вывод (файл, консоль), тогда вам нужно вызвать метод flush() вручную, чтобы записать частично заполненный буфер для вывода (файл, консоль).