Метод close
Метод close класса Reader закрывает поток чтения
и освобождает связанные с ним системные ресурсы, такие как
файловые дескрипторы или сетевые соединения. Метод не принимает
параметров. Если поток уже был закрыт, повторный вызов
close не даёт эффекта. После закрытия потока любая
попытка вызвать методы read, ready или
skip приводит к исключению IOException.
Класс Reader реализует интерфейс AutoCloseable,
поэтому метод close автоматически вызывается при
использовании конструкции try-with-resources.
Синтаксис
reader.close()
Пример
Давайте откроем файл через FileReader, прочитаем
один символ и закроем поток методом close:
import java.io.FileReader;
import java.io.Reader;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (Reader reader = new FileReader("test.txt"))
{
int res = reader.read();
System.out.println(res);
reader.close();
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода (для файла с содержимым "abcde"):
97
Пример
Давайте закроем поток вручную в блоке finally
и убедимся, что повторный вызов close безопасен:
import java.io.StringReader;
import java.io.Reader;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
Reader reader = new StringReader("abcde");
try
{
int res = reader.read();
System.out.println(res);
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
finally
{
try
{
reader.close();
reader.close();
System.out.println("closed");
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
}
Результат выполнения кода:
97
"closed"
Смотрите также
-
класс
Reader,
который является базовым классом для чтения символов -
метод
read,
который читает один символ из потока -
класс
BufferedReader,
который читает текст с буферизацией -
метод
closeкласса Writer,
который закрывает поток записи