日期:2014-05-20  浏览次数:20697 次

有关一个String 转换成 ByteArrayInputStream 和FileInputStream 里面而且数据不会变化的问题
有一字符串:
String   a=“[B@1bc887b”;

如何把   a   写入到ByteArrayInputStream   和FileInputStream   里面,并且数据内容不会改变?

------解决方案--------------------
如果你的byte[]数组是从ObjectOutputStream之后得来的,那么是不可以new String(buff)的,因为其中包含了不可见字符,根本不是一个字符串


你可以Integer.toHexString()这样转换每个字节,也可以使用BASE64编码后得到可见字符
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
List list = new ArrayList();
list.add( "112 ");
oos.writeObject(list);
oos.close();
byte[] buff = baos.toByteArray();
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
String str = encoder.encode(buff);
System.out.println(str);
System.out.println(Arrays.equals(buff, new sun.misc.BASE64Decoder().decodeBuffer(str)));