2

.txt ファイルの特定の場所に行を挿入したいと考えています。今私が知っている唯一の方法は、ファイル全体を配列として読み取り、指定された行を正しい場所に配置してから、すべてを書き戻すことです。Javaを使用してこれを達成する簡単な方法はありますか? 私の意図は、ファイルへのアクセスを可能な限り減らすことです。

4

3 に答える 3

6

Javaを使用してこれを達成する簡単な方法はありますか?

Java 7 では、挿入ポイントが巨大なファイルの末尾にある場合を除き、単純に次のようにします。

List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);
于 2013-10-02T08:56:01.920 に答える
2

を使用して、読み取りと書き込みを同時に行うようにしてくださいBufferedReader

アイデアは、行を読み取り、すぐに他のファイルに書き込むことです。

BufferedReader rd = null;
    BufferedWriter wt = null;

    try {
        rd = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("/yourfile.txt"), "UTF-8")
                );

        wt = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(
                                "/newfile" + ".txt"), "UTF-8")
                );

        int count = 0;

        for (String line; (line = reader.readLine()) != null;) {

            count++

            if (count == 6) {
                // add your line 
                // wt.write(newline);
            }

            wt.write(line);
            wt.newLine();
        }
    } finally {
        close(wt);
        close(rd);
    }
于 2013-10-02T08:55:18.050 に答える
0

RandomAccessFileこの問題を解決しないでください。この投稿で議論されました。とにかくファイルを書き換える必要があります。
プログラムメモリを節約するために、バッファを使用して読み書きするだけで、それを変更し、すぐに新しいものに書き込むことができます。

于 2013-10-02T09:03:42.870 に答える