Javaのバイトストリーム入門!InputStreamとOutputStreamの基本と使い方
Javaのバイトストリームとは
バイトストリームは、データをバイト単位(8ビット)で扱うための入出力の仕組みです。バイトストリームクラスは8ビットのデータを読み書きするもので、テキスト(文字)だけでなく、動画・音声・画像など、あらゆる種類のデータを扱うことができます。
Javaでは、抽象クラスであるInputStreamとOutputStreamが、すべての入出力ストリームクラスのスーパークラスとして定義されています。これらを継承した各クラスを利用することで、バイト列の読み書きが可能になります。
主なバイトストリームクラスの一覧
Javaが標準で提供している代表的なバイトストリームクラスは以下のとおりです。
| InputStream(入力系) | OutputStream(出力系) |
|---|---|
| FileInputStream | FileOutputStream |
| ByteArrayInputStream | ByteArrayOutputStream |
| ObjectInputStream | ObjectOutputStream |
| PipedInputStream | PipedOutputStream |
| FilteredInputStream | FilteredOutputStream |
| BufferedInputStream | BufferedOutputStream |
| DataInputStream | DataOutputStream |
サンプルプログラム:ファイルのコピー
次の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構文を使えばストリームの自動クローズが可能になり、リソースリークを防げます。
-
JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順
CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各
-
Javaでプロパティファイルからデータを読み取る方法を解説
JavaのPropertiesクラスは、Hashtableクラスのサブクラスであり、永続化可能なプロパティの集合(プロパティセット)を表します。Propertiesオブジェクトはストリームへ保存したり、ストリームから読み込んだりすることができます。また、プロパティリスト内の各キーとそれに対応する値は、どちらも文字列型として扱われます。Javaでは、Propertiesファイルを使うことでアプリケーションの設定情報を外部化し、キーと値(key-value)のペアとして管理できます。Propertiesクラスが提供するload()メソッドを使用すると、.propertiesファイルに記述されたキー