2016-06-30 2 views
1

ストリームとしてシリアライズされたオブジェクトを読みます次のアプローチへ:私はこのように膨大なリンクリスト(150メガバイト)を連載している

public ArrayList deserialize(File file){ 
    ArrayList<LinkedList> e = null; 
    try 
    { 
     FileInputStream fileIn = new FileInputStream(file); 
     ObjectInputStream in = new ObjectInputStream(fileIn); 
     e = (ArrayList<LinkedList>) in.readObject(); 
     in.close(); 
     fileIn.close(); 
     return e; 
    }catch(IOException i) 
    { 
     i.printStackTrace(); 
     return null; 
    }catch(ClassNotFoundException c) 
    { 
     System.out.println("Object not found"); 
     c.printStackTrace(); 
     return null; 
    } 
} 

それは、逆シリアル化プロセスがまだ実行されている間、一部の非直列化されたデータを使用することは可能ですし、まだ完了していませんか?

+1

いいえ、不可能です。しかし、代わりにあなたのリストをループし、各要素を別々に書くことができ、各要素を別々に読み返すことができます。または、Javaのシリアライズよりも優れたフォーマットを選択します。 Javaのシリアル化は、長期間の記憶には悪い考えです。 –

答えて

2

できません。ファイルとの間にノンブロッキングI/Oなどはありません。あなたの質問は理にかなっていません。

+0

あなたが正しいと後ろを見て – Aalto

関連する問題