Java | ファイルから読み込んだ配列を一部だけ書き出す例(IOと組み合わせる)

Java Java
スポンサーリンク

ここでは Java 8 “以下” で書けるように、Files.readAllLinesFiles.write を使わずに実装したバージョン を示します。

つまり、BufferedReader / PrintWriter を使ってファイル I/O を行う古典的な書き方です。


やること(Java 8 以下版)

  1. BufferedReaderinput.txt を読む
  2. 1行ずつ ArrayList に入れる
  3. subList(from, to) で一部を取り出して ArrayList にコピー
  4. PrintWriteroutput.txt に書き出す

完成コード(Java 8 以下対応)

import java.util.*;
import java.io.*;

public class ArrayListStringSliceOldIO {
    public static void main(String[] args) {
        BufferedReader br = null;
        PrintWriter pw = null;

        try {
            // ① BufferedReader でファイル読み込み
            br = new BufferedReader(new FileReader("input.txt"));

            // ② ArrayList<String> に行ごとに追加
            ArrayList<String> list = new ArrayList<>();
            String line;
            while ((line = br.readLine()) != null) {
                list.add(line);
            }

            // ③ subList で一部だけ取り出す(例:1〜3)
            List<String> part = new ArrayList<>(list.subList(1, 4));

            // ④ PrintWriter でファイルに書き出し
            pw = new PrintWriter(new FileWriter("output.txt"));
            for (String s : part) {
                pw.println(s);
            }

            System.out.println("元のリスト      : " + list);
            System.out.println("抜き出したリスト: " + part);
            System.out.println("output.txt に書き出しました!");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // ⑤ close(Java 7 以前は try-with-resources が使えない想定で手動 close)
            try {
                if (br != null) br.close();
                if (pw != null) pw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
Java

動作説明(初心者向け)

BufferedReader + FileReader

古いバージョンほどよく使う組み合わせ:

BufferedReader br = new BufferedReader(new FileReader("input.txt"));
Java

1 行ずつ読むときの定番です。


ArrayList に読み込む

while ((line = br.readLine()) != null) {
    list.add(line);
}
Java

行がなくなるまで読み続ける。


subList(配列の部分抜き出しと同じ仕組み)

list.subList(1, 4)
Java

インデックス 1〜3 の3行
(to は “含まない” のがポイント)


PrintWriter で書き込み

pw = new PrintWriter(new FileWriter("output.txt"));
pw.println(s);
Java

println で行単位で書き出せるので簡単。


finally で close

Java 6〜7 以前のコードに近い形で手動で閉じる必要があります。


出力ファイル(output.txt)

もし input.txt が:

apple
banana
cherry
orange
grape
melon

なら、

subList(1,4) の結果:

banana
cherry
orange

が output.txt に書き出されます。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました