从文件中删除行

时间:2010-11-29 12:45:42

标签: java file-io java-io

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

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 );
    }
}

3 个答案:

答案 0 :(得分:2)

你的||需要成为一个&&。

即。

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

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

答案 1 :(得分:1)

这将永远是真的: “姓名”!=“姓名”|| “”电子邮件“!=”姓名“

if(! (line.trim().equals(name) || line.trim().equals(email)) ){
}

答案 2 :(得分:0)

其他海报是正确的。您应该阅读this