当我从文本文件中删除一行,将其添加到临时文本文件中,然后用原始文件替换临时文件时,扫描仪没有加载正确的文本。它正在从原始文件加载内容,而不是更新文件。我希望它使用新内容加载更新的文件。
try
{
File inputFile = new File("department.txt");
File tempFile = new File("departmentTemp.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String lineToRemove = departResIDField.getText();
String currentLine;
while((currentLine = reader.readLine()) != null)
{
String trimmedLine = currentLine.trim();
if(trimmedLine.startsWith(lineToRemove)) continue;
writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close();
reader.close();
inputFile.delete();
tempFile.renameTo(inputFile);
fWriter = new FileWriter(inputFile.getAbsoluteFile(), true);
printOut = new PrintWriter(fWriter);
writer = new BufferedWriter(fWriter);
writer.write(departResIDField.getText() + "\t" +
departResNameField.getText() + "\r\n");
writer.close();
int result = Integer.parseInt(departResIDField.getText());
depart.add(new Department(result, departResNameField.getText()));
insResDepartModel.addElement(departResNameField.getText());
depart.remove();
//This is where I am having problem with the code
//The scanner is scanning old data not the updated data
Scanner scan = new Scanner(inputFile);
while(scan.hasNext())
{
depart.add(new Department(scan.nextInt(), scan.next()));
}
scan.close();
for(int i = 0; i < depart.getSize(); i++)
{
Department d1 = depart.get(i);
System.out.println(d1.departID + d1.departName);
}
menuLayout.show(cardLayout, "15");
departResIDField.setText(null);
departResNameField.setText(null);
departUpdateButton.setVisible(false);
departCancelButton.setVisible(false);
} catch (IOException f)
{
f.printStackTrace();
}
输出:1 生物 2 化学 4 统计 5 物理 3 数学
预期产出:1 生物学 2 化学 4 统计学 5 物理学 3 微积分
代码删除“3 Math”并添加“3 Calculus