Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在用Java编辑txt文件时保持缩进_Java - Fatal编程技术网

如何在用Java编辑txt文件时保持缩进

如何在用Java编辑txt文件时保持缩进,java,Java,我试图替换txt文件中的一些字母并重写它,但我根本无法保留缩进。 源文件如下所示: aaaaaaaawrpaaaaaaaaaaaaaa bbbwrpbbbbbbbbbbbbbbbbbbbbbbbbb 以下是我尝试过的: public static void fileReader (String path) throws FileNotFoundException, IOException { File prevfile = new File(path); BufferedRea

我试图替换txt文件中的一些字母并重写它,但我根本无法保留缩进。 源文件如下所示:

aaaaaaaawrpaaaaaaaaaaaaaa

bbbwrpbbbbbbbbbbbbbbbbbbbbbbbbb

以下是我尝试过的:

public static  void fileReader (String path) throws FileNotFoundException, IOException {
    File prevfile = new File(path);
    BufferedReader reader = new BufferedReader(new FileReader(prevfile));
    String line = reader.readLine();
    while (line!=null){
        content = content  + line + "\n" ;
        line = reader.readLine();
    }
    String newCOntent = content.replaceAll("WRP","WRD");
    FileWriter writer = new FileWriter(prevfile);
    writer.write(newContent);

    writer.close();
    reader.close();

}
}


之后,我在一行中获得输出。

您在Windows上吗?很可能原始文件使用CRLF行结尾,但您只编写LF行结尾。有关详细信息,请参阅。请尝试
content=content+line+System.lineSeparator()
。。。它可能会起作用,但我真的建议您看看
java.nio
,它允许您使用
列表
读写行,其中每个
字符串
都是一行。那样。您根本不必关心……或者不使用
content=content+line+“\n”完全正确。对于较大的文件,这是非常低效的,因为它会给您带来O(n^2)复杂性。相反,使用Java提供的内置工具读取文件:(请参见此处接受的答案)。此外,
replaceAll
使用正则表达式语法,因此如果您想更改的字符之一是正则表达式元字符之一,如
*
+
[
等。您不会得到预期的结果。请改用
替换(…)
,它也会替换所述字符串的所有匹配项,但不支持正则表达式语法。@JoachimSauer我不知道行尾的不同,这非常有帮助!