Java InputStream被阻止

时间:2014-06-30 15:34:46

标签: java inputstream

我的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();
    }

在我的日志中,我有&#34;缓冲......&#34;和数据大小,直到我发送的字节数组的长度,但当大小是最大值时,没有任何事情发生。没有错误,没有崩溃,什么都没有,就像我们待在一起而没有做出循环......

有人有任何想法吗?

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

修改

我添加了

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

在我结束的时候,它的工作!

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

此外,您应该在完成阅读后关闭输入流。