我的InputStream有点问题。

这里的代码:

public byte[] getBytes(InputStream in) throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int read = 0;
        byte[] buffer = new byte[1024];

        while ( 0 < (read = in.read(buffer))) {
            Log.v(TAG,"buffering...");
            out.write(buffer,0,read);
            Log.v(TAG, "bufffered data size : "+out.size());
        }
        Log.v(TAG, "close out");
        out.close();
        Log.v(TAG, "getBytes finish");
        return out.toByteArray();
    }


在我的日志中,我有“正在缓冲...”和数据大小,直到我发送的字节数组的长度为止,但是当大小为最大值时,什么也没有发生。没有错误,没有崩溃,没有任何理由,就像我们停留在没有循环的时候...

有人有什么主意吗?

而且...对不起我的英语。

编辑:

我加了

if(is.available()==0){
    Log.v(TAG, "time to sleep");
    Thread.sleep(200);
    if(is.available()==0)
        break;
}


在我的那一刻结束时,它起作用了!

谢谢您的帮助!

最佳答案

好吧,in.read(buffer)将一直阻塞,直到它接收到数据,到达文件末尾或引发异常(来自here)为止。我的猜测是,它仍然只是在等待InputStream的更多输入。

另外,在完成对输入流的读取之后,应该关闭它。

09-30 15:32
查看更多