iteye_13139 2010-10-08 22:59
浏览 367
已采纳

为什么我从inputstream里面读出内容的时候会多读出一部分呢

我的源代码:

InputStream is = ms.getInputStream();
OutputStream s = new FileOutputStream("d:/temp/demo.html");
byte b[] = new byte[1024];
while (is.read(b) != -1) {
os.write(b);
os.flush();
}
is.close();
os.close();

就这样读出来的内容最后会多出来一点,就是最后一点内容读了两次!

  • 写回答

2条回答 默认 最新

  • AA@陈长泽@.com 2010-10-09 13:57
    关注

    代码写错了。
    首先不知道你的s是做什么用的。
    假设你的is是从一个文件读的流,os是往另外一个文件写的流。
    is.read(b)是从is流中读取最多b.length长度数据。如果已经读完了,则返回读取的长度。如果全部读完,最后会返回-1。
    os.write(b)是将b中的数据全部写入os流.
    应该:
    int size=0;
    while((size=is.read(b))!=-1){
    os.write(b,0,size);
    os.flush();
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?