Метод close класса Writer
Метод close класса Writer закрывает поток записи
и освобождает связанные с ним ресурсы, например дескрипторы файлов
или сетевые соединения. После закрытия потока любые попытки вызвать
методы write, flush или append приводят
к исключению IOException. Метод не принимает параметров
и не возвращает значения. Если поток уже был закрыт ранее,
повторный вызов close не даёт эффекта.
Синтаксис
public void close() throws IOException
Пример
Давайте создадим объект Writer, запишем в него строку,
а затем закроем поток с помощью метода close:
import java.io.Writer;
import java.io.StringWriter;
public class Main
{
public static void main(String[] args)
{
try
{
Writer writer = new StringWriter();
writer.write("abcde");
writer.close();
System.out.println("stream closed");
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"stream closed"
Пример
Давайте попробуем записать данные в поток после его закрытия и посмотрим, какое исключение будет выброшено:
import java.io.Writer;
import java.io.StringWriter;
public class Main
{
public static void main(String[] args)
{
try
{
Writer writer = new StringWriter();
writer.close();
writer.write("12345");
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
Результат выполнения кода:
"Stream closed"
Пример
Давайте запишем строку в файл через FileWriter
и корректно закроем поток в блоке finally:
import java.io.FileWriter;
import java.io.Writer;
public class Main
{
public static void main(String[] args)
{
Writer writer = null;
try
{
writer = new FileWriter("test.txt");
writer.write("abcde");
System.out.println("data written");
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
finally
{
try
{
if (writer != null)
{
writer.close();
System.out.println("stream closed");
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
}
Результат выполнения кода:
"data written"
"stream closed"