、を取り改行を加えて書き出す

前回の解説

AddLF.java のwhileの中、しかも outb.write( c ) の後にifが入らなくては"。"の後に改行にはなりません。

読んだ文字が"。"かどうかは System.out.println(c) で調べておくのが簡単です。"。"だったら、outb.newLine() で改行を入れるわけです。

ファイル名 AddLF.java の核心部分

int c;
while ((c = inb.read()) != -1) {
    outb.write( c );
    //System.out.println(c);
    //if ( c == 12290 ) {
    if ( c == Character.codePointAt("。",0){
        outb.newLine();
    }
}

//System.out.println(c) は、"。"のコードポイントを調べた名残です。

次の課題

ファイル名 kaigyou3.txt

みかん、りんご、ぶどう、れもん、だいこん、にんじん
はくさい、いちご、めろん、すいか

を、次のようにするプログラムを作ります。

ファイル名 kaigyou4.txt

みかん
りんご
ぶどう
れもん
だいこん
にんじん
はくさい
いちご
めろん
すいか

"。" が "、" に代わっていますが、加えて "、" そのものは消えてなくなっているというところがポイントです。たぶん、if( ) ~ else ~ という構文が必要になるでしょう。

AddLF.java の核心部分の変更

以下のは先ほどの AddLF.java の核心部分です。

int c;
while ((c = inb.read()) != -1) {
    outb.write( c );
    //System.out.println(c);
    if ( c == 12290 ) {
        outb.newLine();
    }
}

当然 outb.write( c ); はこの場所ではいけません。"、"だったら書かないわけですから、"、"でない時だけ outb.write( c ); するという風にします。

そして、"、"だった時には outb.newLine(); するということになります。

また、12290 は"。"のコードポイントです。"、"のコードポイントを調べましょう。

読み書きするファイル名の変更

ファイル名を忘れずに変えます。

FileReader   in  = new FileReader("kaigyou3.txt");
BufferedReader inb = new BufferedReader(in);
FileWriter     out  = new FileWriter("kaigyou4.txt");
BufferedWriter outb = new BufferedWriter(out);

課題

1.

上記の AddLF2.java をつくり実行してみなさい

ファイル名 AddLF2.java

適当なテキストファイル kaigyou3.txt を作って、実行し、kaigyou4.txt ができていることを確認しなさい。

kaigyou4.txtをエディタで開いて内容を確認しなさい。

うまくいってなければ、AddLF2.java にもどってもう一度考え直します。

もくじ

Javaプログラミング
聖愛中学高等学校
http://www.seiai.ed.jp/
Aug. 2009 改編