我有一个向量,我试图从中删除一个对象。该方法如下所述(以及确保其被删除的检查)。在其中调用定义向量存储位置的getVector方法,以及返回Vector中返回对象的findItem。我知道getVector和findItem正常工作,因为我能够将一个对象添加到一个向量,并查看向量中的对象。
public Message removeMember (Message m)
//list is the vector location
//item is the object in the vector i am looking to remove
{
list = getVector(m);
item = findItem(list, m);
if (item != null) // if item exists in the vector (code enters this statement)
{
System.out.println("removing " + item.name + " from file");
list.remove(item); // remove the item from the vector
// search for item to insure it is removed
item = findItem(list, m);
if (item == null) // if item has been removed
{
System.out.println(m.name + " removed from file.");
m.response = m.name + " removed from file.";
}
else //if the item has not been removed
{
System.out.println("Error removing member from file.");
m.response = "Error removing member from file.";
}
}
else // item does not exist in vector at all
{
m.response = m.name + " was previously removed or never existed.";
}
return m;
}
我遇到的问题是,即使我进行检查以确保删除该项目,并且程序进入该检查并且System.out.println(m.name +“从文件中删除。”)验证在控制台上已删除该条目,我仍然可以搜索它(通过程序),当我打开矢量位置时,浏览文本文件,我可以看到信息仍在文件中。
提前感谢您的帮助!
答案 0 :(得分:4)
除非我遗漏了什么,否则你实际上从来没有从文件中删除任何东西。我假设您正在将Vector的元素写入代码中其他位置的文件中。从Vector本身中删除元素不会将其从文件中删除;你必须重写文件。
如果您将Vector保存为序列化对象并尝试在记事本中查看它,则仍需要在删除所需元素后使用新的Vector对象重写该文件。