Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのバイトストリーム入門!InputStreamとOutputStreamの基本と使い方

Javaのバイトストリームとは

バイトストリームは、データをバイト単位(8ビット)で扱うための入出力の仕組みです。バイトストリームクラスは8ビットのデータを読み書きするもので、テキスト(文字)だけでなく、動画・音声・画像など、あらゆる種類のデータを扱うことができます。

Javaでは、抽象クラスであるInputStreamOutputStreamが、すべての入出力ストリームクラスのスーパークラスとして定義されています。これらを継承した各クラスを利用することで、バイト列の読み書きが可能になります。

主なバイトストリームクラスの一覧

Javaが標準で提供している代表的なバイトストリームクラスは以下のとおりです。

InputStream(入力系)OutputStream(出力系)
FileInputStreamFileOutputStream
ByteArrayInputStreamByteArrayOutputStream
ObjectInputStreamObjectOutputStream
PipedInputStreamPipedOutputStream
FilteredInputStreamFilteredOutputStream
BufferedInputStreamBufferedOutputStream
DataInputStreamDataOutputStream

サンプルプログラム:ファイルのコピー

次のJavaプログラムは、FileInputStreamを使って特定のファイルからデータを読み込み、FileOutputStreamを使って別のファイルに書き出す例です。いわゆる「ファイルコピー」の基本的な処理を実装しています。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOStreamsExample {
    public static void main(String args[]) throws IOException {
        // FileInputStreamオブジェクトの生成
        File file = new File("D:/myFile.txt");
        FileInputStream fis = new FileInputStream(file);
        byte bytes[] = new byte[(int) file.length()];

        // ファイルからデータを読み込む
        fis.read(bytes);

        // 書き込み先ファイルの指定
        File out = new File("D:/CopyOfmyFile.txt");
        FileOutputStream outputStream = new FileOutputStream(out);

        // データをファイルに書き込む
        outputStream.write(bytes);
        outputStream.flush();
        System.out.println("Data successfully written in the specified file");
    }
}

実行結果

Data successfully written in the specified file

処理の流れとポイント

  • 読み込み: FileInputStreamで読み込み元ファイルを開き、read()メソッドでバイト配列へデータを読み込みます。
  • 書き込み: FileOutputStreamで書き込み先ファイルを開き、write()メソッドでバイト配列の内容を書き出します。
  • フラッシュ: flush()メソッドを呼び出すことで、バッファ内に残っているデータを確実にファイルへ書き込みます。
  • クローズ: 使用後はclose()メソッドでストリームを閉じるのが安全です。Java 7以降では、try-with-resources構文を使えばストリームの自動クローズが可能になり、リソースリークを防げます。

  1. JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順

    CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各

  2. Javaでプロパティファイルからデータを読み取る方法を解説

    JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー