用Java写文件
首先,我是Java的新手。我给自己定了一个小计划,现在我陷入了困境。我试图写入一个已经存在的文件,但它只是覆盖了它。我正在尝试替换包含“maxBooks”的行 以下是我使用的代码:用Java写文件,java,bufferedwriter,Java,Bufferedwriter,首先,我是Java的新手。我给自己定了一个小计划,现在我陷入了困境。我试图写入一个已经存在的文件,但它只是覆盖了它。我正在尝试替换包含“maxBooks”的行 以下是我使用的代码: FileWriter writeFile = new FileWriter(fileLocation); BufferedReader readLines = new BufferedReader(new FileReader(fileLocation)); Buffe
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------");
请记住,我遗漏了“试一试”。请告诉我如何编辑文本文件。如果你需要更多信息,请告诉我
谢谢:)
编辑
对不起,我应该澄清一下。我只是试图编辑测试文件中的一行,而不是整个文本文件
最终代码:
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();
您覆盖了您试图读取的文件,这是一种不好的做法。写入一个新文件,然后重命名为原始文件。您在同一个
文件位置上读写。
您应该给出两个不同的位置
是这样的
//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);
您使用的是哪个版本的Java?如果您使用的是7,您可以使用Java.NIO来实现其中的一些功能。我试图写入一个已经存在的文件,但它只是覆盖了它,不清楚这是什么意思(代码就是这样做的)。也许可以给出一个输入的简短示例,说明您的期望和得到的结果;Petermm,我只需要编辑文本文件中的一行。假设原始文本文件包含两行:maxBooks=2,totalBooks=5。我只想编辑第一行(maxBooks=2),谢谢@fge,它像做梦一样工作,我的更新代码在我的问题中。再次感谢:)