Метод close
Метод close класса PrintStream закрывает поток вывода
и освобождает связанные с ним системные ресурсы. После вызова этого
метода запись в поток становится невозможной - попытка вызвать
методы print, println или write приведет
к исключению. Метод не принимает параметров. Если поток уже был
закрыт ранее, повторный вызов close не дает никакого эффекта.
Важно отметить, что закрытие System.out или System.err
крайне не рекомендуется, так как эти потоки используются всей
программой и после их закрытия вы не сможете выводить данные
в консоль.
Синтаксис
printStream.close()
Пример
Давайте создадим поток вывода в файл, запишем в него строку
и закроем его с помощью метода close:
import java.io.PrintStream;
import java.io.FileNotFoundException;
public class Main
{
public static void main(String[] args)
{
try
{
PrintStream ps = new PrintStream("output.txt");
ps.println("abcde");
ps.close();
System.out.println("stream closed");
}
catch (FileNotFoundException e)
{
System.out.println("file not found");
}
}
}
Результат выполнения кода:
"stream closed"
Пример
Давайте проверим, что после закрытия потока запись в него приводит к ошибке:
import java.io.PrintStream;
import java.io.FileNotFoundException;
public class Main
{
public static void main(String[] args)
{
try
{
PrintStream ps = new PrintStream("output.txt");
ps.println("12345");
ps.close();
ps.println("abcde");
}
catch (FileNotFoundException e)
{
System.out.println("file not found");
}
}
}
Результат выполнения кода:
Exception in thread "main" java.io.IOException: Stream closed
Пример
Давайте убедимся, что повторный вызов close
не приводит к ошибке:
import java.io.PrintStream;
import java.io.FileNotFoundException;
public class Main
{
public static void main(String[] args)
{
try
{
PrintStream ps = new PrintStream("output.txt");
ps.println("abcde");
ps.close();
ps.close();
System.out.println("done");
}
catch (FileNotFoundException e)
{
System.out.println("file not found");
}
}
}
Результат выполнения кода:
"done"
Смотрите также
-
класс
PrintStream,
который представляет поток вывода -
метод
flush,
который сбрасывает буфер потока -
метод
println,
который выводит строку с переводом строки -
метод
print,
который выводит данные в поток