入出力にファイルを使う場合も、ストリームを使うことによって画面に対しての入出力と同様に実現可能。
コード例*******************************************
・sampleIn.txtからデータを読み込み、sampleOut.txtへ出力する。
・出力する際、「行番号:sampleIn.txtの内容」の形式で行番号を追加する。
package sample.sample1;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
public class Sample1_2 {
public static void main(String[] args) throws IOException {
InputStream inputStream = new FileInputStream(new File("c:\\sampleIn.txt"));
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
OutputStream outputStream = new FileOutputStream(new File("c:\\sampleOut.txt"));
PrintStream printStream = new PrintStream(outputStream);
String line = bufferedReader.readLine();
for(int lineNo = 1; line != null; lineNo++){
printStream.println(lineNo + ":" + line);
line = bufferedReader.readLine();
}
}
}
**************************************************
[コード解説]
- sampleIn.txtからデータを読み込むためにInputStreamを作成 → 実体はFileInputStreamのインスタンス。
- 出力先のOutputStreamを作成 → 自体はFileOutputStreamのインスタンス。
…
標準入出力と同様にPrintStreamで扱えるようにしている。
- BufferedReader#readLine()メソッドの戻り値は1行分の文字列(改行コードは含まれない)。
…readLine()メソッドの戻り値がnullでない間はループ処理を行う。
(戻り値がnullという事は、ストリームの終わり(ファイルの終わり)に達したことを意味する。)
- BufferedReaderとPrintStreamを用意するまでは多少違うものの、それ以外は画面からの入出力と同様に 処理が可能。(違いは、入出力のストリームの元となっている部分)
→オブジェクト指向の恩恵(ポリモーフィズムの概念が生かされている)
最終更新:2009年05月30日 18:48