Метод flush
Метод flush класса OutputStream заставляет поток немедленно записать все накопленные в буфере данные в место назначения. Обычно выходные потоки, особенно буферизованные, накапливают данные в промежуточном буфере для повышения производительности. Метод flush не принимает параметров и не возвращает значения. После вызова этого метода все данные, которые были записаны через write, гарантированно попадают в нижележащий поток или устройство вывода.
Синтаксис
public void flush() throws IOException
Пример
Давайте создадим файл, запишем в него строку через буферизованный поток и принудительно вызовем flush, чтобы данные попали в файл до закрытия потока:
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("output.txt")))
{
String data = "abcde";
out.write(data.getBytes());
out.flush();
System.out.println("Данные записаны в файл");
}
catch (IOException e)
{
System.out.println("Ошибка: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Данные записаны в файл"
Пример
Давайте запишем несколько строк в буферизованный поток и после каждого вызова write будем вызывать flush, чтобы данные сразу попадали в файл:
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream("output.txt")))
{
out.write("12345".getBytes());
out.flush();
out.write("abcde".getBytes());
out.flush();
System.out.println("Все строки записаны");
}
catch (IOException e)
{
System.out.println("Ошибка: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Все строки записаны"
Смотрите также
-
класс
OutputStream,
который является базовым для всех выходных потоков -
метод
write,
который записывает байты в поток -
метод
close,
который закрывает поток и освобождает ресурсы -
класс
BufferedWriter,
который также поддерживает буферизацию и метод flush