我有一个包含内容的文本文件
data1
data2
data3
我需要通过查看数组来将字符串data1替换为data2并将data3替换为data4。 xs是一个包含data1和data3的数组。 xd是一个包含data2和data4的数组
此代码替换文本文件中的内容,即。 data3与data4,但不会用data2代替data1。
String originalFilePath = "C:\\Users\\GOMATHI\\Desktop\\str.txt";
String originalFileContent = "";
BufferedReader reader = null;
BufferedWriter writer = null;
try {
reader = new BufferedReader(new FileReader(originalFilePath));
String currentReadingLine = reader.readLine();
while (currentReadingLine != null) {
originalFileContent += currentReadingLine + System.lineSeparator();
currentReadingLine = reader.readLine();
}
String modifiedFileContent, xy;
for (int i = 0; i < 2; i++) {
modifiedFileContent = originalFileContent.replaceAll(xs[i], xd[i]);
writer = new BufferedWriter(new FileWriter(originalFilePath));
writer.write(modifiedFileContent);
writer.write(xy);
}
}
答案 0 :(得分:0)
在两个循环执行中,您都修改了原始(未修改)文件的内容。因此,只有最后的修改是可见的。
您只能使用修改后的版本:
String modifiedFileContent = originalFileContent;
for (int i = 0; i < 2; i++) {
modifiedFileContent = modifiedFileContent.replaceAll(xs[i],xd[i]);
}
第二个问题是您在每次循环执行中都编写了修改。提取该文件,然后再运行一次:
for (int i = 0; i < 2; i++) { ... }
writer = new BufferedWriter(new FileWriter(originalFilePath));
writer.write(modifiedFileContent);
writer.write(xy);
答案 1 :(得分:0)
循环中有writer
,所以
originalFileContent
中将“ data1”替换为“ data2”,并将结果写入文件中。originalFileContent
中将“ data3”替换为“ data4”,然后将结果写入文件。第一次替换的效果被丢弃了。将替换循环与编写分开,并重新使用以前的替换结果:
String modifiedFileContent=originalFileContent;
for(int i=0;i<2;i++)
{
modifiedFileContent = modifiedFileContent.replaceAll(xs[i],xd[i]);
}
writer = new BufferedWriter(new FileWriter(originalFilePath));
writer.write(modifiedFileContent);
writer.close();