我的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;
}
在我结束的时候,它的工作!
感谢您的帮助!
答案 0 :(得分:0)
好吧,in.read(buffer)
将阻塞,直到它收到数据,它到达文件的末尾,或抛出异常(来自here)。我的猜测是它仍在等待来自InputStream的更多输入。
此外,您应该在完成阅读后关闭输入流。