根据JSR 30即CLDC的规定,当流结束时,在流的尾部自动添加-1作为流结束标记,对于一个InputStream来说,我们总是可以使用:
java 代码
- StringBuffer?message?=?new?StringBuffer(); ??
- int?readed?=?0; ??
- try?{ ??
- while?((readed?=?inputStream.read())??!=?-1)?{ ??
- message.append((char)?readed); ??
- }catch?(IOException?e)?{ ??
- e.printStackTrace(); ??
- }??
读取流信息,然而,在S40 3RE的真机(模拟器没有测试,也没有测试的意义)上,当使用这段代码从蓝牙读取一个流的时候,实际上你无法到达流尾而跳出循环,而相同的程序,在S60上是没有问题的。
我的第一反应是,Nokia的S40 3RE的java是否通过了SUN的测试?
下面是我获取inputStream的方法:
java 代码
- String?url?=?"btspp://00025B00A5A5:1;authenticate=false;encrypt=false;master=false"; ??
- StreamConnection?connection?=?(StreamConnection)?Connector.open(url); ??
- InputStream?inputStream?=?connection.openInputStream();??
很奇怪的是,HTTP以及Socket好像是好的。可以肯定地是,S40 3RE对GCF的支持是不完全的。