Класс OutputStream
Класс OutputStream - это абстрактный класс, который служит основой для всех классов, предназначенных для записи байтов. Он находится в пакете java.io. Поскольку класс абстрактный, напрямую создать его экземпляр нельзя, однако он определяет набор методов, которые наследуются и реализуются конкретными подклассами, такими как FileOutputStream, ByteArrayOutputStream или BufferedOutputStream. Основная задача этого класса - предоставить единый интерфейс для записи данных в поток. В нем определены такие ключевые методы, как write для записи байтов, flush для принудительной отправки данных из буфера и close для освобождения ресурсов.
Синтаксис
public abstract class OutputStream implements Closeable, Flushable
Класс реализует интерфейсы Closeable и Flushable. Основные методы, которые переопределяются в подклассах:
// Записывает один байт
public abstract void write(int b) throws IOException;
// Записывает массив байтов
public void write(byte[] b) throws IOException;
// Записывает часть массива байтов
public void write(byte[] b, int off, int len) throws IOException;
// Сбрасывает буфер
public void flush() throws IOException;
// Закрывает поток
public void close() throws IOException;
Пример
Рассмотрим пример использования анонимного подкласса OutputStream, который выводит полученные байты в консоль. Мы запишем в него строку "abcde" и вызовем метод flush:
import java.io.IOException;
import java.io.OutputStream;
public class Main
{
public static void main(String[] args)
{
OutputStream os = new OutputStream()
{
@Override
public void write(int b) throws IOException
{
System.out.print((char) b);
}
};
try
{
byte[] data = "abcde".getBytes();
os.write(data);
os.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
"abcde"
Пример
Чаще всего на практике используются готовые подклассы, например FileOutputStream для записи в файл. Давайте запишем строку "12345" в файл test.txt и убедимся, что данные записаны:
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 = "12345".getBytes();
os.write(data);
os.flush();
System.out.println("Data written successfully");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
"Data written successfully"
Смотрите также
-
класс
InputStream,
который является базовым для потоков ввода -
метод
write,
который записывает байты в поток -
класс
FileOutputStream,
который записывает байты в файл -
класс
BufferedWriter,
который эффективно записывает символы