2011-01-07 11 views
1

私はtwitter検索APIからツイートを取得するnetbeansのGUIクラスを持っています。ソースユーザー、投稿時刻、ツイートテキストなどを表示するTextAreas、Labels、Editorペインが含まれています。 ファイルに保存され、クラスをシリアライズする必要があるので、ファイル全体のツイートをオブジェクトとして保存することができます。どのようなヘルプ?GUIクラスのオブジェクトをJavaのファイルに保存(シリアル化)するにはどうすればよいですか?

答えて

2

あなたが必要としないコントロールに関連するものがたくさんあるので、GUIオブジェクト全体を保存しないでください。代わりにカスタムシリアライザを作成してください。 〜ですctually非常に簡単です。

この単純な例を挙げると、クラスにはユーザーの名前が上にあるフレームがありますが、これはシンプルな名前なのでシリアライズされていないため、残りのJFrameを保存する必要はありませんオブジェクト。その他の詳細は、シリアライズ可能な単純なプロパティです。

public class Simple implements Serializable { 

    private transient JFrame win; 
    private String username; 
    private Date postTime; 
    //...assume getters/setters constructors e.t.c. 
    private void writeObject(ObjectOutputStream out) throws IOException { 
     out.write(this); 
     out.flush(); 
    } 
    private Object readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 
     Simple s = (Simple) in.read(); 
     s.setWin(new JFrame(s.getUsername())); 
     //...any other extra setup can be done here 
     return s; 
    } 

} 

あなたは、私は物事をシンプルに保つために試した見ることができるように、私はちょうどそれを試してみました、まだそれは完全な解決策よりも「10のためのスターター」の多くはでていないこれを書かれている注意してください。 シリアライゼーションをカスタマイズすることができます。たとえば、完全なDateオブジェクトではなくストリームにLongを送信することができます。つまり、出力は でした。out.write(username); out.write(postTime.getTime()); もちろん、オートボクシングは長いものをロングに変換することを可能にしています。そのため、いくつかの不正なjdkがIntegerにボックスを入れて精度を失う可能性があります。 +ストリームはストリームから読み込まれた順序でミラーリングされる必要があります。これが行われた後

とにかくあなたはとても

ObjectOutputStreamのようなファイルoout =新しいObjectOutputStreamの(新しいのFileOutputStream(「blah.bin」))にオブジェクトを書き込むことができます。 シンプルs =新しいシンプル(); //...いくつかの値をsに設定します。 oout.writeObject(s); oout.flush(); oout.close(); ObjectInputStream oin =新しいObjectInputStream(新しいFileInputStream( "blah.bin")); シンプルシンプル=(シンプル)oin.readObject(); oin.close();

明らかに例外処理と効率的なストリームの使用に必要な余分な構文の量は含まれていませんが、いくつかの考えを示すだけです。

これがあなたの気が利いていないなら、いつでもオブジェクトグラフをxmlシリアライザに使ってみることができます。これはとても便利です。 "java.beans.XMLEncoder"これは、データベース内のテキストフィールドに単純なBeanを格納する際に非常に便利なクラスでした。

+0

本当にありがとうございました – HB87

2

これは間違いなく実行する必要があります。あなたの最後のリゾートでなければなりません。

0

他にも、GUIオブジェクトではなく、データをシリアル化してください。

今、データそのものがJSONの可能性が最も高いので、構文解析に使用するのと同じツール(おそらくJacksonなど)を使用してJSONを書き出すことができるはずです。

関連する問題