Я в основном создаю приложение журнала, где каждая отдельная запись журнала должна сохраняться, и я хотел бы сохранить все записи в одном файле.Сериализовать несколько записей в один и тот же файл
Я видел множество учебников по сериализации одного объекта, поэтому я придумал это решение, (который не работает), но даже если мне удастся его исправить, оно похоже на неряшливое решение.
(Здесь я пытаюсь сериализации ArrayList, и каждый раз, когда я сохранить запись, я де-сериализации список и добавить новую запись в список, прежде чем сериализации снова)
Чтобы уточнить, мой вопрос is: s это хороший способ сохранить объекты в один и тот же файл, несколько раз?
Или у кого-нибудь есть подсказки о чем-то другом, я должен попробовать, ссылки на видео или документацию по этому поводу также оценены.
public class Serializer
{
//Calls readFile and adds the returned entries to an ArrayList
//Add the target object to the list and write to the file
public static void writeToFile(Object target)
{
ArrayList entries = new ArrayList();
entries = readFile();
entries.add(target);
String filename = "entries.bin";
FileOutputStream fileOut = null;
ObjectOutputStream objOut = null;
try
{
fileOut = new FileOutputStream(filename);
objOut = new ObjectOutputStream(fileOut);
objOut.writeObject(entries);
objOut.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
//Reads the file and returns all entries in a list
public static ArrayList readFile()
{
ArrayList persistedEntries = new ArrayList<>();
String filename = "entries.bin";
FileInputStream fileIn = null;
ObjectInputStream objIn= null;
try
{
fileIn = new FileInputStream(filename);
objIn = new ObjectInputStream(fileIn);
persistedEntries = (ArrayList) objIn.readObject();
objIn.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace();
}
return persistedEntries;
}
}
Это может помочь, если вы также упомянуть, каким образом он «не работает» - это бросить исключение? Который из? – Hulk
Я действительно не уверен, что не работает, потому что я получаю исключение из диапазона вне диапазона, и если я понял, что ArrayLists не может произойти. Но я только пытался запустить программу, а не сам метод. Но, как вы можете видеть, мой вопрос заключается не в том, что код не работает, мне просто интересно узнать, хороша ли «идея», или если я полностью что-то пропустил и должен возглавить в другой направление. :) –
Глядя на свой код, я замечаю, что вы всегда 'читаете' перед' записью 'файла. Необходимо проверить пустой файл 'entries.bin', чтобы узнать, что такое возвращаемый объект ArrayList? – jrbeverly