日期:2014-05-19  浏览次数:21230 次

InputStream 可以读两次吗?
我从socket 接收到inputStream 流,我要读两次,
第一次读出来要判断是什么类型的字符串,
第二次要写到文件里

现在问题是第一次可以读到,第二次写在文件里的就是空的,
如果第一次不读流,直接写在文件里就是可以的

是不是流第一次读完要做一下处理,才能读第二次呢?
要做什么处理
------解决方案--------------------
缓存到一个String里面吧!
------解决方案--------------------
不关闭可以读N此.

前提除非单线程。
------解决方案--------------------
对于一次通讯只能够读一次,你需要在一次内处理完所有逻辑
------解决方案--------------------
读一次
俩次会报错

<code>
java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:250)

</code>
------解决方案--------------------
就和水渠中的水一样,你把水截取到你家地了,别人还能浇地吗?呵呵
------解决方案--------------------
不能读俩次吧每次读的东西都不一样

------解决方案--------------------
不会读两次的, 因为socket和MQ差不多,只要相互通信了,来了消息,就会被一次取走。
------解决方案--------------------
记住:流是无法回读的。
------解决方案--------------------
不可以读两次的,只能读一次,InputStream就类比成一个杯子,杯子里的水就像InputStream里的数据,你把杯子里的水拿出来了,杯子的水就没有了,InputStream也是同样的道理!!所以你想要多次使用InputStream里面的数据,那就保存在一个String里面,这样你想怎么用就怎么用,也没有必要去重复去读InputStream。
------解决方案--------------------
流只能读一次,我之前遇到类似的问题,后来的解决办法是操作一次连接一次