// 读取数据
private class readThread extends Thread { public void run() {
BufferedInputStream inStream = null;
String s = new String();
try {
inStream = new BufferedInputStream(socket.getInputStream());
while (true) {
byte[] buffer = new byte[1024];
inStream.read(buffer);
String str = new String(buffer);
Log.i("", str.trim());
s += str.trim();
Log.i("333333333333333333", s);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
Message msg = new Message();
Log.i("222222222", s);
msg.obj = s;
msg.what = 1;
LinkDetectedHandler.sendMessage(msg);
s = new String();
}
}
}为什么finally里的代码不执行?
private class readThread extends Thread { public void run() {
BufferedInputStream inStream = null;
String s = new String();
try {
inStream = new BufferedInputStream(socket.getInputStream());
while (true) {
byte[] buffer = new byte[1024];
inStream.read(buffer);
String str = new String(buffer);
Log.i("", str.trim());
s += str.trim();
Log.i("333333333333333333", s);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
Message msg = new Message();
Log.i("222222222", s);
msg.obj = s;
msg.what = 1;
LinkDetectedHandler.sendMessage(msg);
s = new String();
}
}
}为什么finally里的代码不执行?
解决方案 »
- 利用套接字处理Http出现问题???
- java读取文件变成字符串的问题
- jdialog传递数据的问题!
- SQL Server 表格显示在java窗体中
- 服务器端Socket如何立刻侦测到客户端Socket中断
- 一个thinking java中关于关键字this的问题
- java,java2,javascript,jbuilder这些到底有什么区别
- jbuilder 中生成exe文件的问题
- 请问大家对《代码大全》的看法怎么样?
- java中是否有system.setProperty(),在哪个包里,从那下载!!!!!!!!!!!!!
- 关于Java 集合List的问题
- import sun.management.ManagementFactory 出错为什么怎么改
死循环会让read方法异常,异常时就会跳出我知道你说的,在死循环中,read肯定会出现异常。但是为什么没有执行finally!
byte[] buffer = new byte[1024];
while ((data=System.in.read())!=-1) {
inStream.read(buffer);
String str = new String(buffer);
Log.i("", str.trim());
s += str.trim();
Log.i("333333333333333333", s);
}
再好好看看read()方法
LZ何以肯定read就会出现异常?read是个阻塞方法,如果没有数据,你的read就被堵塞着,除非关闭socket什么的
while (true) {
throw new IOException("异常抛给你看,finally执不执行");
Log.i("333333333333333333", s);
}
当read读完时就阻塞了
throw new IOException("异常抛给你看,finally执不执行");
Log.i("333333333333333333", s);
}
试试 看
香香看
int result = inStream.read(buffer);
if (result < 1)
break;
这样读取到末尾后就跳出循环?
private class readThread extends Thread { public void run() { try {
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String s = new String();
String readString = null;
while ((readString = br.readLine()) != null) {//流读取为空时阻塞
Log.i("", readString.trim());
s += readString.trim();
Log.i("333333333333333333", s);
}
Log.i("222222222", s);
Message msg = new Message();
msg.obj = s;
msg.what = 1;
LinkDetectedHandler.sendMessage(msg);
s = new String();
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
我单步调试发现是流读取阻塞。
现在如何解决阻塞!请大侠指点!
read 确实会抛IO异常 不过 read是阻塞方法api文档:“读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞”