【发布时间】:2017-09-21 20:48:17
【问题描述】:
我正在尝试对文件中的可序列化对象执行随机读/写操作。
我知道我可以设置 FileInputStream 的位置,然后像这样围绕它包裹适当的输入流:
InputStream file = new FileInputStream(fileName);
((FileInputStream)file).getChannel().position(pos);
InputStream buffer = new BufferedInputStream(file);
ObjectInput input = new ObjectInputStream (buffer);
但是如果我以后必须再次更改FileInputStream 的位置以执行另一个写入操作怎么办?
如何更改/重置BufferedInputStream 使其正常运行?我什至必须这样做吗?
另外,我假设这个问题的任何答案也适用于输出场景?!
【问题讨论】:
-
您将需要使用标记和重置方法。 mark() 方法允许您为某些类型的输入流标记要跳回的点。例如,您可以在读取对象之前标记流。然后重置以能够重新读取它。或者,为此目的使用 RandomAccessFile。
-
@Jason 他在哪里说他只想向后跳?
标签: java serialization inputstream java-io