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クラスを優先して利用するようにしてください。