私のタイムゾーンでこんにちは。
exJelloプロバイダーでJavaMailAPIを使用しています。SearchTermクラスを使用して取得したメッセージをフィルタリングしていますが、検索メソッドが結果を返すまでに平均1分以上かかるため、この方法で一連のメッセージをシリアル化することにしました。それほど長く待つ必要はありませんでした。理論上の問題と1つの特定の問題。1)Serializableインターフェイスを実装するクラスのみをシリアル化できるので、このメッセージを「シリアル化」するために使用する方法は「実際の」シリアル化ではありませんよね?私のコードの抜粋:message.writeTo( "OutputStream");
2)今私が扱っている問題:コードのスニペット:
messages = inbox.search(new AndTerm(terms));
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("serializer.txt"));
for(Message msg : messages){
msg.writeTo(stream);
}
プロセスの最後に、ファイル「serializer.txt」で複数のメッセージをシリアル化しました。私の質問は、これらのメッセージをどのように逆シリアル化できるかです。すでに1つのメッセージを逆シリアル化できますが、ファイルに複数のメッセージが含まれている場合は、最初のメッセージのみが逆シリアル化されます。コード:
ObjectInputStream file = new ObjectInputStream(new FileInputStream("serializer.txt"));
new MimeMessage(session,file);
このコードは1つのメッセージだけを逆シリアル化しますが、シクルを作成すると、最初のメッセージだけが再び逆シリアル化されます。したがって、どの体も同じ問題に直面していました。PS-> InputStreamからメソッドreadObjectを使用しようとすると、例外が取得されます。唯一の方法は、Messageコンストラクターを使用することです。
どうぞよろしくお願いします