2011-08-15 9 views
0

私はJavaで小さなアプリケーションを開発しています。特定の時点で私は私のカスタムクラスのオブジェクトをテキストファイルに保存する必要があります。toString()メソッドを自分のカスタムクラスにオーバーライドしてから、ObjectOutputStreamクラスを使用してカスタムクラスのオブジェクトをテキストファイルに保存します。これで、テキストファイルには期待どおりのテキストが含まれています。三行iのオブジェクトデータと一緒に私のファイルにいくつかの静的データを追加するにはどうすればよい、今ではJava:ObjectOutputStreamを使ってファイルに静的テキストを追加する方法

ObjectOutputStream outputStream = null; 
outputStream = new ObjectOutputStream(new FileOutputStream(filename)); 
outputStream.writeObject(person);//person is the instance of my custom class 

のための主要なコードが含まれてい

outputStream = new ObjectOutputStream(new FileOutputStream(filename)); 
outputStream.WhatFunctoinToUse("some static text");//What function i use to add static text?? 
outputStream.writeObject(person);//person is the instance of my custom class 

答えて

1

オブジェクトで平坦化するプリミティブ型の値を追加する場合は、ObjectOutputStreamPrintStreamに渡して、staticの値を必要とする新しい行を追加できるようにします。

読み取りと書き込みの両方について下記を参照してください。

//Writting 
    ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("person.out")); 
    outputStream.writeObject(person); 
    PrintStream pst = new PrintStream(outputStream); 
    pst.append("Some static Value"); 

    outputStream.flush(); 
    outputStream.close(); 
    pst.close(); 

    // Reading 
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.out")); 
    Perrson person=(Person) in.readObject(); 
    String staticText =in.readLine(); 
    in.close(); 
0

以下のあなたがたObjectOutputStreamを利用することによって、ライティングことを実現ホープpersonには、本質的にpersonオブジェクトをシリアライズしています。

3

短い答え:あなたはしません。

ObjectOutputStreamは、その方法で使用することを意味しません。 APIによって指定された形式でSerializableオブジェクトを出力します。これは常に良いアイデアではない、つまり将来のリリースでの互換性を壊すことは簡単です。

出力された形式は読みやすいように見えますが、印刷不能な文字が多く含まれています。静的なテキストを追加するとシリアル化が破損する可能性があります。

あなたが探していることのいずれかです:

なJSONまたはXML(それは本当に簡単です、http://simple.sourceforge.net/を試してみてください)

B)としてa)のクリアテキストのシリアライズあなたのシリアライズされたオブジェクト以外のテキストファイル。

非常に良い理由がない限り、ObjectOutputStreamの機能を拡張しようとするべきではありません。

関連する問題