РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
856 of 1163 menu

Метод flush

Метод flush класса Writer принудительно записывает все данные, накопленные в буфере, в базовый поток вывода. Класс Writer является абстрактным базовым классом для всех символьных потоков вывода в Java, и многие его наследники (например, BufferedWriter, FileWriter, OutputStreamWriter) используют внутреннюю буферизацию для повышения производительности. Метод flush не принимает параметров и не возвращает значения. После вызова flush данные гарантированно передаются в нижележащий поток, однако сам поток остаётся открытым и может использоваться дальше.

Важно понимать, что метод flush не закрывает поток. Для полного освобождения ресурсов необходимо дополнительно вызвать метод close, который, как правило, сам вызывает flush перед закрытием.

Синтаксис

writer.flush()

Пример

Давайте запишем строку в файл через BufferedWriter и вызовем flush, чтобы убедиться, что данные попали в файл до закрытия потока:

import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try (BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"))) { writer.write("abcde"); writer.flush(); System.out.println("Data flushed successfully"); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } } }

Результат выполнения кода:

"Data flushed successfully"

Пример

Давайте рассмотрим пример с StringWriter, который не требует файловой системы. Запишем данные и вызовем flush, а затем получим содержимое буфера:

import java.io.StringWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try { StringWriter writer = new StringWriter(); writer.write("12345"); writer.flush(); String res = writer.toString(); System.out.println(res); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } } }

Результат выполнения кода:

"12345"

Пример

Давайте запишем несколько строк через BufferedWriter и после каждого вызова write будем выполнять flush, чтобы данные сразу попадали в целевой поток:

import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) { writer.write("abcde"); writer.flush(); System.out.println("First part flushed"); writer.write("12345"); writer.flush(); System.out.println("Second part flushed"); } catch (IOException e) { System.out.println("Error: " + e.getMessage()); } } }

Результат выполнения кода:

"First part flushed" "Second part flushed"

Смотрите также

  • класс Writer,
    который является базовым классом для символьных потоков вывода
  • метод write,
    который записывает символы в поток
  • метод close,
    который закрывает поток и освобождает ресурсы
  • метод append,
    который добавляет символы в конец потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить