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

Метод close

Метод close класса OutputStream закрывает поток вывода и освобождает системные ресурсы, связанные с этим потоком. После вызова метода close запись в поток становится невозможной и попытка вызвать методы write или flush приведет к исключению IOException. Метод не принимает параметров и не возвращает результата. Если поток уже был закрыт ранее, повторный вызов close не дает никакого эффекта.

Метод close объявлен в абстрактном классе OutputStream и реализуется конкретными подклассами, такими как FileOutputStream, ByteArrayOutputStream и другими. При работе с потоками вывода рекомендуется использовать конструкцию try-with-resources, которая автоматически вызывает close по завершении работы.

Синтаксис

outputStream.close()

Пример

Давайте создадим поток вывода в файл, запишем в него строку и закроем поток с помощью метода close:

import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class Main { public static void main(String[] args) { try { OutputStream os = new FileOutputStream("test.txt"); byte[] data = "abcde".getBytes(); os.write(data); os.close(); System.out.println("stream closed"); } catch (IOException e) { System.out.println("error: " + e.getMessage()); } } }

Результат выполнения кода:

"stream closed"

Пример

Давайте посмотрим, что произойдет при попытке записи в уже закрытый поток:

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; public class Main { public static void main(String[] args) { try { OutputStream os = new ByteArrayOutputStream(); os.write("abcde".getBytes()); os.close(); os.write("12345".getBytes()); System.out.println("write after close"); } catch (IOException e) { System.out.println("error: " + e.getMessage()); } } }

Результат выполнения кода:

"error: Stream Closed"

Пример

Давайте используем конструкцию try-with-resources, которая автоматически закрывает поток:

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; public class Main { public static void main(String[] args) { try (OutputStream os = new ByteArrayOutputStream()) { os.write("abcde".getBytes()); os.flush(); System.out.println("write done"); } catch (IOException e) { System.out.println("error: " + e.getMessage()); } } }

Результат выполнения кода:

"write done"

Смотрите также

  • класс OutputStream,
    который является базовым классом для потоков вывода
  • метод write,
    который записывает байты в поток вывода
  • метод flush,
    который принудительно записывает данные из буфера
  • класс FileOutputStream,
    который записывает байты в файл
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить