读写RMS 的两种方法

最近在做项目中, 在客户端要创建一个RMS给服务端读取,服务端已经写好了。但因为不知道服务端是好何读取的, 而我又是一个新手,所以在网上找了许多关于读写RMS的方法。我们知道RMS的读写都是用byte[], 网上说的大部分都是用
ByteArrayOutputStream/DataOutputStream写数据,而用ByteArrayInputStream/DataInputStream 来读数据。其用法如下:

假设要把String strHello = "Hello, string!";写入RMS,写数据的代码:
[code]
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(strHello);
byte[] rec = baos.toByteArray();
.......//把rec写入rms

baos.close();
dos.close();
[/code]

而读数据的代码:
[code]
......
ByteArrayInputStream bais = new ByteArrayInputStream(rec);
//rec是 从rms读取出来的byte[] 类型
DataInputStream dis = new DataInputStream(bais);
strHello = dis.readUTF();

bais.close();
dis.close();
[/code]


当我用这个方法写数据入RMS,项目运行时却发现服务返回是" {Hello,string!"。一时间我不知是错在哪里(很奇怪的,在output

window里我想copy这个字符串时,是copy不了的,如果不copy ‘{’,就可以。)。

后来我看了服务器读数据时的代码才知道,服务器读数据时直接用rec.toString();返回数据的。所以我把读写数据直接用String类

的方法就可以了。

写数据的代码:
[code]
byte[] rec = strHello.getBytes();
.....
[/code]

读数据:
[code]
.....
strHello = rec.toString();
[/code]

所以在读写RMS时的方法要用同一类型,不然就会得到意想不到的结果...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值