Метод close
Метод close класса InputStream закрывает поток
ввода и освобождает связанные с ним системные ресурсы,
например дескрипторы файлов или сетевые соединения.
Метод не принимает параметров и не возвращает значения.
После вызова close попытка чтения из потока
приводит к исключению IOException.
Метод объявлен в классе InputStream и реализует
интерфейс AutoCloseable, поэтому поток можно
открывать в конструкции try-with-resources -
тогда Java вызовет close автоматически.
Синтаксис
public void close() throws IOException
Пример
Давайте создадим поток ввода и закроем его
методом close:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Main
{
public static void main(String[] args)
{
byte[] data = {97, 98, 99, 100, 101};
InputStream is = new ByteArrayInputStream(data);
try
{
int res = is.read();
System.out.println(res);
is.close();
System.out.println("Stream is closed");
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
97
"Stream is closed"
Пример
Давайте откроем поток в конструкции
try-with-resources, чтобы метод close
вызвался автоматически:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Main
{
public static void main(String[] args)
{
byte[] data = {49, 50, 51, 52, 53};
try (InputStream is = new ByteArrayInputStream(data))
{
int res = is.read();
System.out.println(res);
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
System.out.println("Stream is closed automatically");
}
}
Результат выполнения кода:
49
"Stream is closed automatically"
Пример
Давайте попробуем прочитать данные из потока после
вызова метода close и посмотрим, что произойдёт:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Main
{
public static void main(String[] args)
{
byte[] data = {97, 98, 99};
InputStream is = new ByteArrayInputStream(data);
try
{
is.close();
int res = is.read();
System.out.println(res);
}
catch (IOException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
Результат выполнения кода:
"Error: Stream closed"
Смотрите также
-
класс
InputStream,
который представляет поток ввода -
метод
read,
который читает байт из потока -
метод
readAllBytes,
который читает все байты из потока -
метод
closeкласса OutputStream,
который закрывает поток вывода