我有一个链接列表,其中包含人员的数据并将其写入文件。我想从列表中删除一个条目,然后将新列表写入文件。 我使用了iterator,但是当我将它写入文件时,它会显示空条目。
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();
}
}
答案 0 :(得分: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();
答案 1 :(得分:0)
使用iterator.remove();
代替list.remove(obj);