私は基本的に、個々のジャーナルエントリを永続化する必要のあるジャーナルアプリを作成しています。すべてのエントリーを1つのファイルに保存したいと思います。複数のエントリーを同じファイルにシリアライズ
私は、単一のオブジェクトをシリアル化する上でのチュートリアルのトンを見てきたので、私はこの解決策を考え出した、(動作しない)が、私はそれを修正するために管理していても、それはずさんな解決策のように感じています。
は(ここで私は、ArrayListのをシリアル化しようとしている、と私は、エントリを保存するたびに、私はリストをデシリアライズして、もう一度シリアライズする前に、リストに新しいエントリを追加する)、
を明確にするために私の質問をこれは、複数の機会に同じファイルにオブジェクトを保存するための良い方法です。
誰か他の何かについて私は試してみてくださいいくつかのヒントを持っていますか、これに関するビデオやドキュメントへのリンクもありがとうございます。
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
実際に何がうまくいかないのかどうかはわかりません。なぜなら、インデックスから範囲外の例外が出ているからです。また、ArrayListを理解することができないはずです。しかし、私はその方法だけではなく、プログラムを実行しようとしました。 私の質問は、実際にはコードが機能していないという事実ではなく、「アイデア」が良いかどうか、あるいは完全に何かを見逃して別の方向。 :) –
あなたのコードを見ると、ファイルを書く前に常にあなたが読んでいることに気付きます。空のファイル 'entries.bin'を調べて、返されたArrayListオブジェクトが何であるかを調べる必要がありますか? – jrbeverly