Javaでプレーンテキストファイルを読み取る 質問する

Javaでプレーンテキストファイルを読み取る 質問する

Java ではファイルのデータを読み書きする方法がいくつかあるようです。

ファイルから ASCII データを読み取りたいのですが、可能な方法とその違いは何ですか?

ベストアンサー1

小さなファイルを読み取る私のお気に入りの方法は、BufferedReader と StringBuilder を使用することです。これは非常にシンプルで要点を押さえた方法です (特に効果的ではありませんが、ほとんどの場合に十分です)。

BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
} finally {
    br.close();
}

Java 7以降ではリソースを試す(自動クローズなど) 機能:

try(BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
}

このような文字列を読み取る場合、通常は行ごとに何らかの文字列処理を実行したいので、この実装を選択します。

ただし、実際にファイルを文字列に読み込みたい場合には、常にApacheを使用します。コモンズIOクラスの IOUtils.toString() メソッドを使用します。ソースはここで確認できます:

http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html

FileInputStream inputStream = new FileInputStream("foo.txt");
try {
    String everything = IOUtils.toString(inputStream);
} finally {
    inputStream.close();
}

Java 7 ではさらに簡単になります。

try(FileInputStream inputStream = new FileInputStream("foo.txt")) {     
    String everything = IOUtils.toString(inputStream);
    // do something with everything string
}

おすすめ記事