2017-01-30 17 views
0

私のようなorg.apache.commons.lang3.SerializationUtilsを使用して(そのサイズは、ハードドライブ上の3,404,851バイト)ファイルオブジェクトをシリアル化する場合:直列化、ファイルサイズ

File fileObject = new File(path); 
byte[] fileBuffer = SerializationUtils.serialize(fileObject); 

fileBuffer.length戻り91!むしろ3,404,851ではないでしょうか?

+3

このユーティリティは、ファイル全体ではなく、ファイルを指すオブジェクトのみをシリアル化します。 – mszymborski

+1

ファイルの内容をシリアル化していません。 'File'クラスは単にディスク上のファイルを表します。おそらくファイル名とそれ以外のものが含まれているはずです。 – Kevin

答えて

1

あなたはFileオブジェクトをシリアル化している、ファイル自体ではありません。

Fileオブジェクトは、ファイルとその場所全体ではなく、ファイルの内容を記述しただけでいくつかのフィールドが含まれています。

+0

この場合、どうすればいいですか? – sasuke

+0

1.それは別の質問です 2.達成しようとしていることは何ですか? – Malt

+0

私は、フレーム化するオーディオファイルの内容をUDPパケットにシリアル化したいと思っています。 – sasuke

1

逐次化のドキュメント(https://docs.oracle.com/javase/8/docs/api/serialized-form.html#java.io.File)を見ると、シリアライズユーティリティは、その内容ではなく、必要に応じてデシリアライズ中に変換された元のセパレータを持つファイルのパスのみを保存することがわかります。 Oracleのドキュメントの場合は

は、直列化された形式の説明へのリンクを取得するためのjavadocのセクションを「も参照してください」を参照してください。

関連する問題