テキストファイルの内容を加工します。"。"を見つけて、その後で改行をいれるというプログラムにします。
まず、エディタで適当なテキストファイルを作成しましょう。ファイル名は kaigyou0.txt。もちろん"。"が含まれていて、"。"の直後に改行されていないところがたくさんある物にします。
あいう。中身はなんでもいいので、"。"が入っていて、改行が 少ないテキストファイルをつくります。適当に改行があっても 問題ありません。まるのあとに次の文字が続いていないとたぶん行が 1行空くようになると思います。
import java.io.*;
public class AddLF {
public static void main( String[] args ) {
try {
FileReader in = new FileReader("kaigyou0.txt");
BufferedReader inb = new BufferedReader(in);
FileWriter out = new FileWriter("kaigyou1.txt");
BufferedWriter outb = new BufferedWriter(out);
ここを考える
outb.close();
out.close();
inb.close();
in.close();
}
catch (IOException e) {
System.err.println( "ファイルがないのでは?" );
}
}
}
プログラムのタイプは前回の一番上の物にしましたが、どれでもかまいません。
今度は、1文字ずつ読んでいきますから、
String line;
while ((line = inb.readLine()) != null) {
の代わりに、
int c;
while (( c = in.read() ) != -1) {
を使いましょう。バイナリファイルから入力で使った時は1バイトずつ読むのに使いましたが、FileReaderやBufferedReaderで使う場合は、1文字ずつ読んで、その文字の文字コード(javaの用語でコードポイント)が c に代入されます。
もし、上記の「ここを考える」のところに
int c;
while ((c = inb.read()) != -1) {
outb.write( c );
}
と書けば、kaigyou0.txtの中の文字はそのままkaigyou1.txtに書き出されることになります。
"。"の文字コード(javaの用語でコードポイント)を調べることができれば、これと比べてもし"。"だったら改行を出力すればOKですね。
if ( c == 「。のコードポイント」) {
改行の出力「newLine()を使えばよかったね」
}
文字コード(javaの用語でコードポイント)を調べるのは「キーボードから1文字入力」で z の文字コードは 122 と調べていますが、同様なことをファイルからの入力でもできますよ。
もう一つの方法は、"。"からコードポイントに変換するcodePointAt()というメソッドを使って文字コードを調べる方法もあります。Character.codePointAt("。",0)とやって、求めます。これを c と比較することもできます。
ファイルから読んだ文字がこうだったとして
ました。その
一文字ずつ出力するが"。"だったらその直後に改行マークを出力する。
ました。LFその
上記の AddLF.java をつくり実行してみなさい
適当なテキストファイル kaigyou0.txt を作って、実行し、kaigyou1.txt ができていることを確認しなさい。
kaigyou1.txtをエディタで開いて内容を確認しなさい。
うまくいってなければ、AddLF.java にもどってもう一度考え直します。