android 怎么解决流读到末尾报-1异常 15
byte[]buffer=newbyte[1024];intlen=0;StringBuildersb=newStringBuilder();while((len=mIn...
byte[] buffer = new byte[1024];
int len = 0;
StringBuilder sb = new StringBuilder();
while ((len = mInputStream.read(buffer)) != -1) {
temp = new String(buffer, 0, len);
sb.append(temp);
}
这段代码目的是读取流里的数据,然后保存起来,但是在android下读到流的末尾-1 会报IO异常,求助怎么解决
报的异常:java.io.IOException: bt socket closed, read return: -1 ,socket没有关闭,只是在客户端write完后 outputstream.close 展开
int len = 0;
StringBuilder sb = new StringBuilder();
while ((len = mInputStream.read(buffer)) != -1) {
temp = new String(buffer, 0, len);
sb.append(temp);
}
这段代码目的是读取流里的数据,然后保存起来,但是在android下读到流的末尾-1 会报IO异常,求助怎么解决
报的异常:java.io.IOException: bt socket closed, read return: -1 ,socket没有关闭,只是在客户端write完后 outputstream.close 展开
展开全部
(len = mInputStream.read(buffer)) != -1
这个没有错误, 是读取流中的字节个数, 到达流末尾了, len会是-1, 结束循环, 问题在于读取流字节的时候你的bt socket关闭了, 导致这个异常, 需要检查为什么bt sokct closed。
这个没有错误, 是读取流中的字节个数, 到达流末尾了, len会是-1, 结束循环, 问题在于读取流字节的时候你的bt socket关闭了, 导致这个异常, 需要检查为什么bt sokct closed。
追问
这个问题我也很纳闷,我客户端仅做了 outputStream.close,如果不关闭,不会出这个异常,我查了下资料,大体意思是在linux下 read到末尾会报异常,在windows下read到末尾返回-1,不知道是这样不。
追答
我这边读取流的方式和你的类似
public static String getContentFromInput(InputStream is) {
if (is == null) {
DebugUtils.logD(TAG, "getContentFromInput passed null InputStream in");
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int size;
try {
size = is.read(buffer);
while (size >= 0) {
out.write(buffer, 0, size);
size = is.read(buffer);
}
out.flush();
buffer = out.toByteArray();
out.close(); //关闭输出流
String result = new String(buffer, "UTF-8");
DebugUtils.logD(TAG, "getContentFromInput return " + result);
return result;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
你把你 outputStream.close的代码片段帖出来看一看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询