首先,我是Java的新手。我为自己设定了一个小项目,目前我被困住了。我试图写一个已经存在的文件,但它只是覆盖它。我试图替换包含'maxBooks'的行。
以下是我使用的代码:
FileWriter writeFile = new FileWriter(fileLocation);
BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));
BufferedWriter writeLines = new BufferedWriter(writeFile);
System.out.println("\n-----File Begin-----");
while((finalLines = readLines.readLine()) != null){
if(finalLines.contains("maxBooks")){
writeLines.newLine();
writeLines.write(finalLines);
System.out.println("This is the if statement");
System.out.println(finalLines);
} else {
fileLines.add(new String(finalLines));
System.out.println("This is the else statement");
System.out.println(finalLines);
}
}
System.out.println("------File End------");
请记住,我已经遗漏了尝试并抓住了。请让我知道如何编辑文本文件。如果您需要更多信息,请与我们联系
谢谢:)
修改
对不起,我应该澄清一下。我只是想编辑测试文件中的1行,而不是整个文本文件。
最终代码:
FileWriter writeFile = new FileWriter(fileLocation + ".tmp", true);
BufferedWriter writeLines = new BufferedWriter(writeFile);
BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));
System.out.println("\n-----File Begin-----");
while((finalLines = readLines.readLine()) != null){
if(finalLines.contains("maxBooks")){
writeLines.write("maxBooks = " + maxBooks);
writeLines.newLine();
System.out.println("This is the if statement");
System.out.println(finalLines);
} else {
fileLines.add(new String(finalLines));
System.out.println("This is the else statement");
writeLines.write(finalLines);
writeLines.newLine();
}
}
System.out.println("------File End------");
file2.renameTo(file);
writeLines.close();
答案 0 :(得分:3)
您覆盖了您尝试阅读的文件,这是不好的做法。写入新文件,然后重命名为原始文件。
答案 1 :(得分:0)
你在同一个fileLocation
上读写你应该给两个不同的位置;
就是这样的
//define newLocation as string that contain path for new file to be written
FileWriter writeFile = new FileWriter(newLocation);
BufferedReader readLines = new BufferedReader(new FileReader(fileLocation));
BufferedWriter writeLines = new BufferedWriter(writeFile);