Довідники Java InputStream

Що таке InputStream в Java?

Клас InputStream у Java є базовим класом для всіх потоків введення. Він забезпечує абстрактний інтерфейс для зчитування даних із різних джерел, таких як файли, масиви байтів або мережеві з'єднання. Основне призначення InputStream полягає у зчитуванні послідовності байтів.


Методи InputStream надають гнучкий спосіб роботи з даними. Найпопулярніші серед них — read(), available() та close(). Ці методи можуть бути перевизначені у класах-нащадках для конкретної реалізації потоків.


Основні можливості InputStream
  1. Зчитування даних побайтово або масивом байтів.
  2. Можливість перевірки доступної кількості даних за допомогою методу available().
  3. Закриття потоку для звільнення системних ресурсів.


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamExample {
    public static void main(String[] args) {
        try (InputStream inputStream = new FileInputStream("example.txt")) {
            int data;
            while ((data = inputStream.read()) != -1) {
                // Зчитування даних і перетворення в символ
                System.out.print((char) data);
            }
        } catch (IOException e) {
            System.out.println("Сталася помилка під час зчитування файлу: " + e.getMessage());
        }
    }
}


Приклад вище демонструє, як можна використовувати InputStream для зчитування вмісту текстового файлу. Метод read() повертає наступний байт даних, а при досягненні кінця файлу повертає -1.


Варто пам'ятати, що InputStream необхідно закривати після використання, щоб звільнити ресурси, які виділяє операційна система. Використання конструкції try-with-resources спрощує цей процес, автоматично закриваючи потік.


Для роботи з великими обсягами даних рекомендується зчитувати їх блоками, використовуючи метод read(byte[] b). Це підвищує продуктивність завдяки зменшенню кількості викликів методу read.


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class BufferedReadExample {
    public static void main(String[] args) {
        try (InputStream inputStream = new FileInputStream("example.txt")) {
            byte[] buffer = new byte[1024]; // Створюємо буфер розміром 1 KB
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                // Перетворюємо зчитані байти у рядок
                System.out.print(new String(buffer, 0, bytesRead));
            }
        } catch (IOException e) {
            System.out.println("Сталася помилка під час зчитування файлу: " + e.getMessage());
        }
    }
}


Цей приклад демонструє використання буфера для прискорення процесу зчитування. Зчитування даних великими блоками може значно зменшити витрати на виконання програми.


Клас InputStream є основою для багатьох інших класів, таких як FileInputStream, ByteArrayInputStream та BufferedInputStream, які надають додаткові можливості для роботи з потоками даних.

Коментарі
Додати коментар

Поки що коментарів немає