Удалить определенные данные, используя ObjectOutputStream - PullRequest
0 голосов
/ 13 марта 2011

В настоящее время я пытаюсь написать программу для хранения данных о людях в файле .dat.Программа должна иметь возможность добавлять записи, отображать записи и удалять записи (все из которых являются объектами одного типа).

Проблема, с которой я сталкиваюсь, заключается в удалении записей.Я получил специальное указание НЕ использовать файл произвольного доступа, но мне нужно иметь возможность удалять определенные местоположения данных.Я не уверен, как я могу определить, какие записи удалять, так как у меня нет способа контролировать любой указатель.У меня есть метод, чтобы найти местоположение записи, но у меня нет возможности удалить данные в месте нахождения объекта.

private static Person findPerson(String theName)
{
    Person thePerson = null;

    try
    {
        inputStream = new ObjectInputStream(new FileInputStream(personFile));

        while(!done) //While the name has not been found
        {
            thePerson = (Person)inputStream.readObject();

            if(theName.equals(thePerson.getName())) //If the name is found
            {
                done = true;
            }
        }
        done = false;

        inputStream.close(); //Close the stream
    }

    catch(IOException e) //If the end of the file is reached
    {
        System.out.println("The name you specified is not in the file.");
    }
    catch(ClassNotFoundException e) //If there is trouble
    {
        System.out.println("Problems with file input.");
    }

    return thePerson; //Return the record
}

Есть ли способ для меня, чтобы определить, куда должен идти ObjectOutputStreamудалить данные?Как мне удалить определенную запись?

1 Ответ

1 голос
/ 13 марта 2011

Вы всегда можете создать новый временный файл и в то время как цикл добавляет туда только те записи, которые вас интересуют. После этого удаляет старый файл и меняет временное имя файла

...