当前位置: 代码迷 >> J2EE >> InputStream 可以读两次吗?解决思路
  详细解决方案

InputStream 可以读两次吗?解决思路

热度:5027   发布时间:2013-02-25 21:40:57.0
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。不能读俩次吧每次读的东西都不一样
  相关解决方案