如何在用Java编辑txt文件时保持缩进
我试图替换txt文件中的一些字母并重写它,但我根本无法保留缩进。 源文件如下所示: aaaaaaaawrpaaaaaaaaaaaaaa bbbwrpbbbbbbbbbbbbbbbbbbbbbbbbb 以下是我尝试过的:如何在用Java编辑txt文件时保持缩进,java,Java,我试图替换txt文件中的一些字母并重写它,但我根本无法保留缩进。 源文件如下所示: aaaaaaaawrpaaaaaaaaaaaaaa bbbwrpbbbbbbbbbbbbbbbbbbbbbbbbb 以下是我尝试过的: public static void fileReader (String path) throws FileNotFoundException, IOException { File prevfile = new File(path); BufferedRea
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我不知道行尾的不同,这非常有帮助!