Tag: fileinputstream objectinputstream

ObjectInputStream对FileInputStream很满意,对getResourceAsStream不满意

我有一些非常标准的代码,它从流中获取序列化对象,基本上看起来像这样: Object getObjectFromStream(InputStream is){ObjectInputStream ois = new ObjectInputStream(is); return ois.readObject(); } 然后我在我的资源文件夹中有一个文件,所以在我的开发机器上,我可以将它作为文件引用,或者作为JarResource引用: InputStream = new FileInputStream(“/ home /…/ src / main / resources / serializedObjects / testObject”); InputStream是= this.getClass()。getResourceAsStream(“/ serializedObjects / testObject”); 在我的脑海中,两者都应该做同样的事情。 然而,当它发生时,两者都解析为有效(非空)流,但FileInputStream正确地从我的getObjectFromStream(InputStream)方法返回一个Object,而getResourceAsStream版本抛出此exception: java.io.StreamCorruptedException:无效的流标题:EFBFBDEF at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:800) 在java.io.ObjectInputStream。(ObjectInputStream.java:297) 大多数情况下,我想知道如何解决这个问题,但我也很欣赏理解两个InputStream之间的区别……

Java FileInputStream ObjectInputStream到达文件结尾EOF

我试图使用readObject读取二进制文件中的行数,但我得到IOException EOF。 我这样做是对的吗? FileInputStream istream = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(istream); /** calculate number of items **/ int line_count = 0; while( (String)ois.readObject() != null){ line_count++; }