我对我编写的函数有一些问题。该函数基本上将文件和字符串作为参数接收到方法中,并在文件中搜索该字符串并将其替换为“”。
public void removeReminder(File a, String search) throws IOException {
File tempFile = File.createTempFile("file", ".txt", a.getParentFile());
BufferedReader br = new BufferedReader(new FileReader(a));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
for (String line; (line = br.readLine()) != null;) {
line = line.replace(search, "");
pw.println(line);
}
br.close();
pw.close();
a.delete();
tempFile.renameTo(a);
}
然后我有3个文本文件,我需要运行此方法。下面是我运行该函数的代码。
removeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// TODO
try {
String names = reminderNameField.getText();
String date = reminderDate.getText();
String details = reminderDetailsField.getText();
File fileName = new File("reminderNames.txt");
File fileDate = new File("reminderDate.txt");
File fileDetails = new File("reminderDetails.txt");
removeReminder(fileName, names);
removeReminder(fileDate, date);
removeReminder(fileDetails, details);
} catch (IOException e){
e.printStackTrace();
}
我不知道为什么这不起作用。它适用于第一次迭代(例如removeReminder(fileName,names);)但它不适用于其他的,它似乎只是忽略它们:s有谁可以告诉我为什么会这样?
答案 0 :(得分:0)
我总是冲洗printwriter。在调用close()之前尝试刷新PrintWriter。
pw.flush();