InputStream/OutStream的读写问题 我的程序在执行InputStream.read()或OutputStream.write()语句时,不返回任何内容,程序死在那里了,请问什么情况下会出现这种情况?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我就贴一部分吧,太多了我这是对串口进行读写的代码,如果执行单步调试(直接运行当然也不成),当执行is.read(b)或os.write(wb)时,程序就不动了,无法继续往下走,当然也不出现异常情况。这是怎么回事?try { if(sp != null) { OutputStream os = sp.getOutputStream(); InputStream is = sp.getInputStream(); byte[] b = new byte[4096]; is.read(b); System.out.println(DataUtility.BytesToString(b)); os.flush(); byte[] wb = ("AT").getBytes(); os.write(wb); b = new byte[4096]; is.read(b); System.out.println(DataUtility.BytesToString(b)); }} catch(IOException e) { e.printStackTrace();} is.read(b); ->>>>is.read(b,0,b.length());同样os.write(wb); ---》》》os.write(b, 0,b.length()); os.write(wb); ---》》》os.write(wb, 0,wb.length()); 答:1)第一个is.read(b)在网络上(或串口通信上)等待读网络数据,但读不到。确信对方发送了数据且flush()了?2)os.write(wb); 之后应该flush()一下。 可能还是我没说清楚,就算到os.write(wb)这句,执行完后应该继续执行下一句吧,但是os.write(wb)执行不过去就好像进行休眠一样不动了。 答:不是os.write(wb)好像进行休眠一样不动了(因为write(..)几平不会发生阻塞。),而是它后面的另一个:b = new byte[4096]; is.read(b); 这个is.read(b);不动了。读不到数据,故“好像进行休眠一样不动了”。 但我把read去掉,直接让他执行write也是死在那,所以不知道为什么 那就是OutputStream os = sp.getOutputStream(); 的问题了 找到问题所在了,手机USB映射串口,显示的是COM5其实用的是COM6晕死了。谢谢hmsuccess 和 jiangnaisong 在Oracle在有一BLOB类型,存放了DOC文件。 面试题 奇怪的异常 请问这样的类继承方法对吗?急 如何删除properties文件的属性 提问一个大概是初学JAVA都遇到的问题?? 求助!大家帮忙看个题 疑问 合成与继承(回答了马上给分) 请问在java里怎么调用dll? java界面,C/C++引擎 数组初始化问题
if(sp != null) {
OutputStream os = sp.getOutputStream();
InputStream is = sp.getInputStream(); byte[] b = new byte[4096];
is.read(b);
System.out.println(DataUtility.BytesToString(b));
os.flush();
byte[] wb = ("AT").getBytes();
os.write(wb); b = new byte[4096];
is.read(b);
System.out.println(DataUtility.BytesToString(b));
}
} catch(IOException e) {
e.printStackTrace();
}
同样os.write(wb); ---》》》os.write(b, 0,b.length());
1)第一个is.read(b)在网络上(或串口通信上)等待读网络数据,但读不到。确信对方发送了数据且flush()了?
2)os.write(wb); 之后应该flush()一下。
b = new byte[4096];
is.read(b);
这个is.read(b);不动了。读不到数据,故“好像进行休眠一样不动了”。