РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
845 of 1163 menu

Метод 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,
    который закрывает поток вывода
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить