2012-05-03 26 views
12

Serializableオブジェクトをディスクに保存するときは、どのファイル拡張子が最適でしょうか?シリアライズされたオブジェクトのファイル拡張子

FileOutputStream fos = null; 
ObjectOutputStream out = null; 
try { 
    fos = new FileOutputStream(filename); 
    out = new ObjectOutputStream(fos); 
    out.writeObject(mySerializableObject); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} finally { 
    IOUtils.closeQuietly(out); 
} 
+1

現時点では.serと思っていますが、100%ではありません – Edd

答えて

23

「の.ser」ファイル拡張子のための合理的な選択である - http://www.file-extensions.org/ser-file-extension

しかし、あなたはそれはあなたが使用しているものサフィックス少し違いを生むと主張している可能性が...それが提供される他の衝突はありませんよく使われるアプリケーション接尾辞。

Javaのシリアル化されたオブジェクトファイルは、クラスパスに関連するクラスを持つJavaアプリケーションによってのみ読み取られます(通常の方法で)。ワンサイズの ".ser"接尾辞は、それらのクラスが何であるか、そしてアプリケーション起動フレームワークがどこでそれを見つけるべきかについての手がかりを提供しません。したがって、ダブルクリックアプリケーションを起動するためのWindowsスタイルのファイル関連付けを設定することはできません。


私はSERファイルを表示または編集することができます方法はあります?

可能性はあるが、ある特定の条件下でのみ、非常に困難である。

ファイルの内容は、シリアライズされたクラスに大きく依存します。これで、そのクラスの名前が何であるか、場合によってはシリアル化されたフィールドの名前と型を判別することができます。しかし、クラスがカスタムのシリアライゼーション/外部化を使用する場合、その表現はファイルのデコード方法の手がかりを持たない不透明なバイナリデータの塊になります。 Java SEクラスライブラリの多くの重要なクラスは、カスタムシリアル化を使用しています。効率性のために...多くのアプリケーションクラスを扱うため、不透明なブロブの問題はかなり一般的です。

.serファイルに記述されているすべてのクラスの.classファイルを見つけ、オブジェクトに逆シリアル化し、リフレクションを使用して逆シリアル化されたオブジェクトのフィールドにアクセスすることもできます。あなたはそれらを微調整して再合成することもできます。ただし、すべての.classファイルの正しいバージョンがない場合、これは非スターターです。

+0

serファイルを表示または編集する方法はありますか? – Winz

+1

@ user1042983要するに、これはJavaオブジェクトのリストであり、作成したJavaアプリケーションによってのみプログラムで編集する必要があります。 – Alex

関連する問題