ByteArrayOutputStream 与 ObjectOutputStream 转换

来源:互联网 发布:大数据集群管理软件 编辑:程序博客网 时间:2024/05/29 18:41
 1 实现

ByteArrayOutputStream   bos   =   new   ByteArrayOutputStream();
        ObjectOutputStream   oos   =   new   ObjectOutputStream(bos);
        oos.writeByte(1);
        oos.writeDouble(1.0);
        oos.writeObject("康健");
       
        byte   []   bytes   =   bos.toByteArray();
        System.out.println(bytes.length);
        InputStream   bis   =   new   ByteArrayInputStream(bytes);
        ObjectInputStream   ois   =   new   ObjectInputStream(bis);
        System.out.println(ois.readByte());
        System.out.println(ois.readDouble());
        Object   obj   =   ois.readObject();

        System.out.println( "obj   :   "   +   obj);

2 为什么网络传输如 用字节流 而不用 字符流

==================我们还可以看到:============
Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1


inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字...至此,有些人可能就会产生一个问题:既然返回结果只能在0-255之间的值,那何返回byte型的呢? 这个问题提得很好,我先顶你一下,可惜本人现在也没搞懂,不过本人会急时补充!

 

还有为什么 bytes   能 还原成相应的对象???

为什么??? 为什么哈

 

原创粉丝点击