0

我有一个包含人员数据并将其写入文件的链接列表。我想从列表中删除一个条目,然后将新列表写入文件。我使用了迭代器,但是当我将它写入文件时,它显示空条目。

public void deleteItem(String Iname){
    MailFiling objFile = new MailFiling();
    MailingList obj = new MailingList();
    Iterator objI = list.iterator();
    while(objI.hasNext()){
        Object o = objI.next();
        if(o.toString().contains(Iname))
            list.remove(obj);
        objFile.WriteToFile2(list);
    }//end of while
}//end of method


public void WriteToFile2(LinkedList list) {

    try {

        String writeFile = new String();
        for (int i =0; i<list.size(); i++)
        writeFile = list.get(i).toString();

        File file = new File("Mailing List 2.txt");
        FileWriter fw = new FileWriter(file, true);
        BufferedWriter bw = new BufferedWriter(fw);

        bw.write(writeFile);
        bw.newLine();
        bw.close();

    } 
     catch (IOException e) {
        System.out.println("Error opening file");
        e.printStackTrace();
    }
}
4

2 回答 2

2

您应该使用迭代器的remove方法而不是列表的方法。

Iterator objI = list.iterator();
while(objI.hasNext()) {
    if(objI.next().toString().contains(Iname)) {
        objI.remove();
    }
}
objFile.WriteToFile2(list);

另请注意,应该在循环之外调用 write 方法。

更新

您的打印代码也存在一些问题。试试这个。

Writer writer = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream("Mailing List 2.txt"), "utf-8"));
for (int i =0; i<list.size(); i++) {
    writer.write(list.get(i).toString() + "\n");
}
writer.flush();
writer.close();
于 2013-10-27T14:57:32.180 回答
0

使用iterator.remove();代替 list.remove(obj);

于 2013-10-27T14:58:17.577 回答