ストリームからシリアル化されたオブジェクトを取り込むかなり標準的なコードがあります。これは基本的に次のようになります。
Object getObjectFromStream(InputStream is){ ObjectInputStream ois = new ObjectInputStream(is); ois.readObject();を返します。 }
次に、リソースフォルダーにファイルがあるので、開発マシンでは、ファイルまたはJarResourceとして参照できます。
InputStream is = new FileInputStream( "/ home /.../ src / main / resources / serializedObjects / testObject"); InputStream is = this.getClass()。getResourceAsStream( "/ serializedObjects / testObject");
私の頭の中では、どちらもまったく同じことをする必要があります。ただし、どちらも有効な(null以外の)ストリームに解決されますが、FileInputStreamはgetObjectFromStream(InputStream)メソッドからオブジェクトを正しく返しますが、getResourceAsStreamバージョンは次の例外をスローします。
java.io.StreamCorruptedException:無効なストリームヘッダー:EFBFBDEF java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:800)で java.io.ObjectInputStream。(ObjectInputStream.java:297)で
ほとんどの場合、これを修正する方法を知りたいのですが、2つのInputStreamの違いを理解していただければ幸いです...