有一字符串:
String a=“[B@1bc887b”;如何把 a 写入到ByteArrayInputStream 和FileInputStream 里面,并且数据内容不会改变?

解决方案 »

  1.   

    String a=“[B@1bc887b”;这个怎么看都是你将一个byte[]直接toString了
    如果你确信这个是正确的,new ByteArrayInputStream(a.getBytes());
      

  2.   

    to:ChDw(米) ( ) 
    String a=“[B@1bc887b”;这是将一个byte[]直接toString了
    但是a.getBytes(); 执行后数据内容就变了!
      

  3.   

    byte 和 String 的转化肯定是存在问题的,不可能在不丢失精度的情况下互转的。
    先MART&UP。
      

  4.   

    那是因为你根本写错方法了,如果你的byte数组保存的是可见字符,可以:
    String a = new String(byteArray);
    a.getBytes();这样就与byteArray相同
    实在不明白你既然有这样的应用,变成String有什么意义
      

  5.   

    我的代码是这样子的:
    byte[] abc=BAOS.toByteArray();
    System.out.println(abc);
    String StrMySerializer=new String(abc);
    System.out.println("序列化: "+StrMySerializer);
    OOS.close();
    System.out.println(StrMySerializer.getBytes());打印结果:
    [B@1bc887b
    序列化:  
    [B@a46701
    两个不一样啊
      

  6.   

    靠,
    你应该调用java.util.Arrays.equals(abc, StrMySerializer.getBytes());
    这个应该是返回true(前提是你的数组内容是可见字符)
      

  7.   

    晕byte[] abc=BAOS.toByteArray();
    System.out.println(abc);
    你这里打印出来的是什么?是abc.toString()的内容,这个数据和abc里面的东西没关系,相当于一个Object.toString(),和new String(abc)完全是两回事
    所以你看到的完全是两个东西,第一个是byte[]这个Object的toString()的值,第二个是把byte[]转换为String的值
      

  8.   

    to:ChDw(米) 
    java.util.Arrays.equals(abc, StrMySerializer.getBytes());这句话起什么作用啊!不太明白,能说明一下吗?to:fool_leave(请及时结贴) 
    你的意思是说把一个byte[] abc转换成一个String 时不丢失数据方法用:
    String StrMySerializer=new String(abc);
    那么把这个StrMySerializer再转成一个byte[] 用什么方法呢?
      

  9.   

    不明白就看文档!而且这个方法从名字就非常明确表示了:如果abc中的内容等于StrMySerializer.getBytes()就返回true
      

  10.   

    to:ChDw(米) 
    运行的结果如下:
    abc=byte[68]
    StrMySerializer.getBytes()=byte[68]
    可是
    java.util.Arrays.equals(abc, StrMySerializer.getBytes());=false 这是为什么啊!
      

  11.   

    如果你的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)));