1

次の内容のテキスト ファイルがあります。

love 
test
me
once

私の Java プログラムは、「love」という単語を「liverpool」に置き換えます。しかし、テキスト ファイルはその形式を失い、次のようになります。

Liverpool  test me once 

すべての文字列が 1 行に表示されます。

これは私がこれまでに持っているものです:

import java.io.*;
public class Replace_Line {
public static void main(String args[]) {
    try {
        File file = new File("C:\\Users\\Antish\\Desktop\\Test_File.txt");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line = "", oldtext = "";
        while ((line = reader.readLine()) != null) {
            oldtext += line + " ";
        }
        reader.close();
        // replace a word in a file
        // String newtext = oldtext.replaceAll("boy", "Love");

        // To replace a line in a file
        String newtext = oldtext.replaceAll("love", "Liverpool");

        FileWriter writer = new FileWriter(
                "C:\\Users\\Antish\\Desktop\\Test_File.txt");
        writer.write(newtext);
        writer.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}
}

ファイル形式を同じに保ち、文字列を置き換えるだけです。ありがとう

4

3 に答える 3

1

このように読んでいる間、あなたは改行を失います:

while((line = reader.readLine()) != null) {
    oldtext += line + " ";
}

これを修正するには、ループ内のコードを次のように置き換える必要があります

oldtext += line + "\n";

ただし、ファイルを1行ずつ読み取り、各行を連結するの+=は非常に非効率的であることに注意してください。Javaを学ぶときにそうすることはできますが、実稼働コードではそうすることはできません。StringBuilderまたはいくつかの外部ライブラリを使用してIOを処理します。

于 2013-01-05T12:28:31.480 に答える
1

行ごとに読む場合は、すべての改行を削除してから、スペースに置き換えます。

oldtext += line + " ";

する必要があります

oldtext += line + System.lineSeparator();
于 2013-01-05T12:28:38.420 に答える
0

交換

oldtext += line + " ";

oldtext += line + "\n";

ただし、これにより改行文字 (\r または \r\n) が \n に変換されることに注意してください。また、ループ内で + 演算子を使用した連結は非常に非効率的であることに注意してください。StringBuilder または StringWriter を使用することをお勧めします。

ファイル全体を単一の文字列として単純に読み取り、replaceAll を呼び出してすべてを書き換えてみませんか。Guava の方法またはcommons-ioの方法を参照してください。

于 2013-01-05T12:30:11.220 に答える