取消从InputStream读取

时间:2009-11-25 04:34:48

标签: java inputstream outputstream

目前我使用ObjecInputStream来阅读Socket,使用这个简单的代码一切正常:

ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Object response = input.readObject();

现在我想以某种方式取消读取,而不关闭流,以便我以后可以再次读取它。有可能吗?

编辑:我想取消读取只是因为它阻止了程序流程。我不需要两次读取相同的信息。我只想取消它,以便我可以发送另一个请求,然后阅读(另一个)响应。

3 个答案:

答案 0 :(得分:2)

查看ObjectInputStream.markSupported()返回的内容。如果它返回true,您可以在开头调用ObjectInputStream.mark(),然后拨打ObjectInputStream.reset()InputStream后退回您标记的地点,以便日后重复使用。< / p>

答案 1 :(得分:2)

如果您有某种“主”线程,那么您应该执行它的I / O.有一个致力于阅读的线程和一些扩展处理输入。如果基于事件,则将结果排队到主线程,如果使用共享状态设计则修改模型。

答案 2 :(得分:1)

您可以使用PushBackInputStream来完成此操作。读取一些字节后,您可以读取字节。