JAVA プログラミング 入門

JAVAのプログラミングについて初歩から解説します。まずは、mainメソッド、変数、演算、if文、for文、while文、メソッド、配列など。続いて、メソッドを複数構成して、プログラムを作成(非オブジェクト指向プログラミング)、しばらく後になると思いますが、オブジェクト指向プログラミングを解説します。 クラスの構成、コンストラクター、継承、・・・、など、本格的OOP(Object Oriented Programming)を解説します。

Java: テキストファイル処理: 文字ストリーム

JAVAでは、ストリームという抽象的なものに対して入出力を行う。テキストファイルを扱うときは、文字ストリームを使う。文字ストリームにはいくつかのクラスがライブラリとして用意されているのでそれを使って、テキストの読み書きをする。入出力に必要なクラスはjava.ioパッケージにある。
プログラムではそれらのクラスを先ずimportする。


文字ストリームのクラス:
Reader
InputStreamReader
FileReader
BufferedReader

Writer
OutputStreamWriter
FileWriter
BufferedWriter
PrintWriter

それらを組み合わせて、入出力の適切なオブジェクトを作り、入出力処理を行う。手順は以下の通りです。

① ストリームを作成する(開く)
② データを書き込む、または読み込む
③ ストリームを閉じる

よく使う入出力の方法:

テキストファイルの入力:
BufferedReader br=
new BufferedReader(newFileReader("ファイル名"));

br.readLine();により一行づつ読む

テキストファイル出力:
PrintWriter pw =
new PrintWriter(
new BufferedWriter(new FileWriter("ファイル名")));

pw.println();により一行づつ書く

標準入力:
BufferedReader br =new BufferedReader( new InputStreamReader(System.in));

br.readLine()により一行づつ読む

標準出力
System.out.println();により一行づつ書く

例1:テキストファイルをコピーする
Proo14_1.java

/*   TEXT FILE 処理    */
/* Copy text file to another file*/
import java.io.*;
class Proo14_1 {
	public static void main(String args[]) throws IOException
	{
      String str;
		BufferedReader br=
			new BufferedReader(new FileReader("a.txt"));
		PrintWriter pw =
			new PrintWriter(new BufferedWriter(new FileWriter("b.txt")));
		while((str=br.readLine())!=null){
			pw.println(str);
			System.out.println(str);
		}
		br.close();
		pw.close();
	}
}
/*
123
1234
*/

説明:
3行 java.oiパッケージをimportしている。
5行 IOExceptionが起こる可能性があるので、その処理をmainを起動したところに任せている。
8,9行 BufferedReaderのオブジェクトを作成している。これでa.txtのテクストファイルを読む準備ができたことになる。
10,11行 PrintWriterオブジェクトを作成している。これで、テキストファイルを書く準備ができたことになる。
12行 brオブジェクトのreadLineメソッドを使って一行読み、それがnullでなければ、pwオブジェクトのprintlnメソッドを使って読み込んだ一行をファイルb.txtに書き込んでいる。さらに同じ一行をディスプレーにも表示している。
16,17行 brとpwオブジェクトを閉じている。


例2:キーボードより入力して、テキストファイルに書き込む
Proo14_2.java

/* TEXT FILE 処理  */
/* keyboard to  file  parameter at start*/
import java.io.*;
class Proo14_2 {
	public static void main(String args[]) throws IOException
	{
      String str;
		BufferedReader br =
			new BufferedReader(new InputStreamReader(System.in));
		PrintWriter pw =
			new PrintWriter(new BufferedWriter(new FileWriter(args[0])));
		while((str=br.readLine())!=null){
			pw.println(str);
		}
		br.close();
		pw.close();
	}
}
/*
abcdefgh
abcde
abc
*/

説明:
11行 args[0]はプログラム起動時のパラメタである。この場合ファイル名(c.txt)である。
20から22行 キーボードより与えたデータである。最後の行の次にcontrolCによりファイルの終わりとしている。ここで、キーボードからの入力修了
このデータはファイルc.txtに書き込まれている。