FileInputStream/FileOutputStreamクラス
バイナリファイルの操作 – FileInputStream/FileOutputStreamクラス- FileInputStream(String name)
- FileOutputStream(String name [,boolean append])
- name:ファイルのパス append:追記モードで開くか
画像などのバイナリファイルを読み書きするには、FileInputStream/FileOutputStreamクラスを利用します。FileInputStream/FileOutputStreamクラスの主なメソッドは、以下の通りです。
| FileInputStream/FileOutputStreamクラスの主なメソッド | ||
|---|---|---|
| クラス | メソッド | 概要 |
| FileInputStream | int read([byte[] b [,int off, int len]]) | 入力ストリームからバイト配列bに読み込み (offは開始位置、lenは読み込み長) |
| long skip(long n) | 読み込みをnバイトだけスキップ | |
| void close() | ストリームを閉じる | |
| FileOutputStream | void write(byte[] b [,int off, int len] | バイト配列bの内容を出力ストリームに書き出し (offは開始位置、lenは読み込み長) |
| void close() | ストリームを閉じる | |
文字ストリームを取得できてしまえば、あとはread/writeメソッドで読み書きする流れは、先ほどと同じです。たとえば以下は、テキストファイルsample.txtの内容をsample2.txtに転記する例です。
StreamTrans.java
package com.example.mynavi.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class StreamTrans {
public static void main(String[] args) {
try (★InputStreamReader reader = new InputStreamReader(
new FileInputStream("C:/data/sample.txt"), "UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream("C:/data/sample2.txt"), "UTF-8")★) {
int data;
while ((data = reader.read()) != -1) {
writer.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
テキストファイルを読み書きする簡易な手段として、他にFileReader/FileWriterというクラスも用意されています。ただし、これらのクラスでは、文字コードはプラットフォーム標準のもので固定となります。
アプリケーションの可搬性などを考慮するならば、InputStreamReader/OutputStreamWriterクラスを優先して利用するようにしてください。






