0

我有以下代码,但它似乎没有工作..有人知道为什么吗?基本上我正在创建一个包含所有行的新文件,除了那些包含我要删除的两个字符串但代码似乎不起作用的行。

public void removelines(String name, String email){
try{
    //Create objects for our file and the temp file.
    File f = new File("addy");
    File temp = new File(f.getAbsolutePath()+ "temp");
    //Our readers.
    BufferedReader buf = new BufferedReader(new FileReader("addy"));
    PrintWriter print = new PrintWriter(new FileWriter(temp));

    String line = null;

    while ((line = buf.readLine())  != null) {
        //put all data not equal to that to be removed into the new file.
            if(!line.trim().equals(name) || !line.trim().equals(email)){
                print.println(line);
                print.flush();
            }
            }
        print.close();
        buf.close();
        f.delete();
        temp.renameTo(f);
    } catch (Exception e){
        JOptionPane.showMessageDialog(null, "ERROR:" + e );
    }
}
4

3 回答 3

2

您的 || 必须是 &&。

IE

!line.trim().equals(name) && !line.trim().equals(email)

否则,如果该行不等于姓名或电子邮件,则将被写入。

于 2010-11-29T12:48:09.783 回答
1

这将永远是正确的:“名称”!=“名称”|| " "电子邮件" != "姓名"

if(! (line.trim().equals(name) || line.trim().equals(email)) ){
}
于 2010-11-29T12:50:52.810 回答
0

其他海报是正确的。您可能应该阅读这篇文章。

于 2010-11-29T12:54:49.967 回答