迭代函数问题

时间:2014-03-08 13:09:42

标签: java string function jbutton file-handling

我对我编写的函数有一些问题。该函数基本上将文件和字符串作为参数接收到方法中,并在文件中搜索该字符串并将其替换为“”。

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有谁可以告诉我为什么会这样?

1 个答案:

答案 0 :(得分:0)

我总是冲洗printwriter。在调用close()之前尝试刷新PrintWriter。

pw.flush();