我的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的更多输入。
另外,在完成对输入流的读取之后,应该关闭它。