ファイルからテキストを読み取る
●ファイルから読み取る
前回は、キーボードからテキストを読み取りましたが、今回はテキストに書かれている内容を読み取ります。
Javaにおける基本的な考え方を以下に示します。
1.ファイルを読み取るメソッドを生成
2.ファイルの内容を出力するメソッドを生成
3.内容を出力する
先ず、ファイルの内容を読み取るには、クラスFileReaderを用いて、ファイルの内容を読み取ります。FileReaderを用いると文字コードを特に気にせずに用いることができます。
//ファイルを読み込むメソッドを生成
FileReader file_data = new FileReader(args[0]);
ファイルを読み込む場合には、コマンドラインの引数からファイル名を読み込んでいます。
次に、ファイルが読み込まれましたので、その内容を表示するメソッドを生成します。インスタンス化されたfile_dataをクラスBufferedReaderの引数として用いることにより、ファイルの文字列を読み取ることができます。
//ファイルのデータを読み込むメソッドを生成
BufferedReader contents = new BufferedReader(file_data);
インスタンス化されたcontentsから、文字列を表示していくには、readLineから、ファイルの内容を一列ずつ読み取ります。ファイルの内容をすべて表示するために、文字列を一列ずつ読み取ることで、最後までくると、その内容はnullになるため、nullになると、文字列を読み取る繰り返しのwhileを終了させます。
while(true){
String data = contents.readLine();
if(data != null){
System.out.println(data);
}
else{
break;
}
}
以上全ての内容をサンプルプログラムとして以下に示します。
//ファイルを読み込み、内容を表示するサンプルプログラム
import java.io.*;//java.ioクラスをインポート
class fileread
{
//メインメソッド
public static void main(String args[]){
if(args.length == 0){
System.out.println("読み込むファイル名を入力してください。");
System.exit(1);
}
try{
//ファイルを読み込むメソッドを生成
FileReader file_data = new FileReader(args[0]);
//ファイルのデータを読み込むメソッドを生成
BufferedReader contents = new BufferedReader(file_data);
while(true){
String data = contents.readLine();
if(data != null){
System.out.println(data);
}
else{
break;
}
}
}
catch(IOException e){
System.out.println("ファイル入出力時にエラー");
System.exit(1);
}
}
}
実行結果は以下の通りです。
D:\private\java>javac fileread.java
D:\private\java>java fileread test.txt
test
test1
test2
test3
引数は、読み込むファイル名で、ここでは「text.txt」です。1つずつ上記のサンプルプログラムを確認していきます。
if(args.length == 0){
System.out.println("読み込むファイル名を入力してください。");
System.exit(1);
}
最初では、引数が与えられていない時のエラー処理です。System.exit(1)でプログラムを終了しています。また、args.lengthでは、引数の数を求めています。
try{
〜
catch(IOException e){
System.out.println("ファイル入出力時にエラー");
System.exit(1);
}
入出力を扱っているため、例外処理を行わなければなりません。ファイル入出力時にエラーが出ると、この箇所のエラー処理が実行されます。
以上を用いて、ファイルの読み込みができました。次は、ファイルの書き込みをみていきましょう。
戻る
|