目前我使用ObjecInputStream
来阅读Socket
,使用这个简单的代码一切正常:
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Object response = input.readObject();
现在我想以某种方式取消读取,而不关闭流,以便我以后可以再次读取它。有可能吗?
编辑:我想取消读取只是因为它阻止了程序流程。我不需要两次读取相同的信息。我只想取消它,以便我可以发送另一个请求,然后阅读(另一个)响应。
答案 0 :(得分:2)
查看ObjectInputStream.markSupported()
返回的内容。如果它返回true
,您可以在开头调用ObjectInputStream.mark()
,然后拨打ObjectInputStream.reset()
将InputStream
后退回您标记的地点,以便日后重复使用。< / p>
答案 1 :(得分:2)
如果您有某种“主”线程,那么您应该执行它的I / O.有一个致力于阅读的线程和一些扩展处理输入。如果基于事件,则将结果排队到主线程,如果使用共享状态设计则修改模型。
答案 2 :(得分:1)
您可以使用PushBackInputStream来完成此操作。读取一些字节后,您可以读取字节。