繁体   English   中英

InputStream读取不返回-1

[英]InputStream read doesnt return -1

嘿我正在尝试使用java套接字发送文件,但我遇到了InputStream类的读取函数问题。 我有这个代码

 InputStream is = sock.getInputStream();
    fos = new FileOutputStream(FILE_TO_RECEIVED);
    bos = new BufferedOutputStream(fos);

    byte [] buffer = new byte[4096];
    int bytesRead;
    int totalLength = 0;

    while(-1 != (bytesRead = is.read(buffer))) {
        bos.write(buffer, 0, bytesRead);
        totalLength += bytesRead;
    }
    bos.close();
    fos.close();
    is.close();

但它最终停止了。 我已经使用System.err.println和调试来检查它,看起来像is.read永远不会给缓存结束时的-1。 所以例如我有一个5000字节的文件,第一个read()返回4096,然后是4(文件的其余部分),然后没有任何导致无限循环的文件。 可能是什么问题?

我真的很感激你能提供的任何帮助,因为我已经被困在那里两个小时了。

当缓冲区结束时,read永远不会给-1

那不对。 当缓冲区结束时,它不应返回-1'。 结束之前它不会返回-1,直到对等体关闭连接才会发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM