Java入門
Java言語3 | Java言語5

4. Java入門4

ファイル入出力
  •  ファイルには大きく分けてテキストとバイナリの2種類のファイルがあります。
     バイナリファイルはテキストエディタでは文字として読めません。
    Javaには用途によって色々なストリームクラスが存在するため、以下に良く
     使用する入出力クラスを示します。

    入力
    FileInputStream FileをReadするための入力Streamを生成
    InputStreamReader バイナリStreamからキャラクタStreamを生成
    FileReader FileをReadするためのキャラクタStreamを生成
    BufferedReader 入力Streamのバッファリングを行うデコレータ


    出力
    FileOutputStream FileへWriteするための出力Streamを生成
    OutputStreamWriter バイナリStreamからキャラクタStreamを生成
    FileWriter FileへWriteするためのキャラクタStreamを生成
    BufferedWriter 出力Streamのバッファリングを行うデコレータ
    PrintWriter 出力StreamへのText出力を容易にするためのデコレータ
  
例題
  • テキストファイルを読み込むプログラムを作成して下さい。
    また、読み込んだ内容を標準出力に出力しなさい。
  
解答と解説
  • import java.io.*;

    class FileReadTest1 {
    public static void main(String[] args) {
    BufferedReader br = null;
    try {
    br = new BufferedReader(
    new FileReader("file.txt"));
    String line;
    while ((line = br.readLine()) != null) {
    System.out.println(line);
    }
    } catch (IOException e) {
    System.out.println(e);
    } finally{
    try {
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }

    Java入門3では、標準入力のためSystem.inを指定していましたが、ファイル
    入出力では、読み込むファイル名を指定します。ファイルを指定する際、
    そのファイルがどこにあるかきちんと指定する必要があることに注意して下さい。

    例) Dドライブ直下にファイルがある場合
    "D:\\file.txt" 絶対パス指定
    "..\\..\\file.txt" 相対パス指定

    上記のように指定方法には絶対パスと相対パスの2種類あることを理解し、
    必要に応じてどちらの指定方法を行うか判断して下さい。

    プログラムはreadLine()でファイル内容を1行単位で取得し、標準出力に出力、
    ファイル内容を読み終えるまでループすると言う簡単な内容となっています。

    上記のことをふまえて、以下の問題を行ってください。
  
演習問題
  • 12. 次に示すように各行に「県の名前,市の名前,その市の人口」がセットされて
    いるperson.txtというファイルがあります。

    person.txtファイル内容例
    埼玉県,さいたま市,1063206
    埼玉県,川越市,335107
    埼玉県,熊谷市,156407
    埼玉県,川口市,479260
    埼玉県,行田市,85846
    埼玉県,秩父市,58739




    このファイルを読み込んで、次のように各項目をタブで区切って表示する
    プログラムを作ってください。

    出力例
    埼玉県 さいたま市 1063206
    埼玉県 川越市 335107
    埼玉県 熊谷市 156407
    埼玉県 川口市 479260
    埼玉県 行田市 85846
    埼玉県 秩父市 58739





    13. 問題12のプログラムに県毎の人口集計機能を付けて下さい。

    出力例
    埼玉県 さいたま市 1063206
    埼玉県 川越市 335107
    埼玉県 熊谷市 156407
    埼玉県 川口市 479260
    埼玉県 行田市 85846
    埼玉県 秩父市 58739
    埼玉県 所沢市 336270
    埼玉県 飯能市 82474
    埼玉県 加須市 68232
    埼玉県 本庄市 61210
    埼玉県 東松山市 92188
    合計:2818939 ←埼玉県の合計
    千葉県 千葉市 916656
    千葉県 銚子市 76030
    千葉県 市川市 464655
    千葉県 船橋市 567027
    千葉県 館山市 50552
    千葉県 木更津市 122838
    千葉県 松戸市 473524
    千葉県 野田市 150583
    合計:2821865 ←千葉県の合計


    <次回は「Java入門5」です。>
  
 
Java言語3 | Java言語5