2

オブジェクトを削除しようとしているベクトルがあります。メソッドは以下に記載されています(およびそれが削除されたことを確認するためのチェックも)。その中で、ベクターが格納される場所を定義する getVector メソッドと、ベクター内のオブジェクトを返す 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 + "ファイルから削除されました。") がコンソールで検証されることです。エントリが削除されたことを確認しても、(プログラムを介して) 検索することはできます。ベクターの場所を開いてテキスト ファイルを参照すると、情報がまだファイル内にあることがわかります。

よろしくお願いします。

4

1 に答える 1

4

何かが欠けていない限り、実際にファイルから何かを削除することはありません。ベクターの要素をコード内の別の場所にあるファイルに書き込んでいると思います。ベクター自体から要素を削除しても、ファイルからは削除されません。ファイルを書き直す必要があります。

ベクターをシリアル化されたオブジェクトとして保存し、それをメモ帳で表示しようとしている場合は、必要な要素を削除した後、新しいベクター オブジェクトでファイルを書き直す必要があります。

于 2012-06-10T18:00:04.830 に答える