obj 《---》byte[] 《---》ByteBuffer
obj 《---》byte[] 《---》ByteBuffer
刘付kin 发表于1年前
obj 《---》byte[] 《---》ByteBuffer
  • 发表于 1年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

#1:将一个对象转化为写入:二进制数组缓冲区byte[]、写入一个文件等。

=======>写入缓冲区=====

HostAndThreadNum hostAndThreadNum = new HostAndThreadNum("hadoop1",3);
//定义一个缓冲区。
byte[] bt = new byte[1024];    
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
 //写对象需要借助于ObjectOutputStream对象,至于最终要写到哪里,就看这个对象中包裹着哪种输出流。
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(hostAndThreadNum); 
byteArrayOutputStream.write(bt);

========写入文件===========

如果写入一个文件中,则需要包裹着FileOutputStream

ObjectOutputStream objectOutputStream2 = new ObjectOutputStream(new 

FileOutputStream("e:/myobject.txt"));

#2:从一个缓冲区里读取信息(任意的信息)出来的过程

=======冲缓冲区中读出一个对象===========

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bt);

ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);

HostAndThreadNum hostAndThreadNum1 = (HostAndThreadNum) 

objectInputStream.readObject();

====================总结:====================

只要是对byte[]进行流的读需要用到:ByteArrayInputStream

   对byte[]进行流的写需要用到:ByteArrayOutputStream 

只要是对“对象”进行读需要用到:ObjectInputStream 对“对象”进行写需要用到:ObjectOutputStream 

至于用到哪种就拿哪种来进行包裹就行了

其他的字符流和字节流的包裹也是一个道理

一般只是用于输入流和输出流之间进行缓冲用byte[]

如果想要永久保存文件文件,必须用到FileOutputStream

#2:byte[] <<<<==========>>>>ByteBuffer(NIO通信)

byte[] bt = new byte[1024];
bt = "hello word".getBytes("utf-8");
inputStream.read(bt);

ByteBuffer buffer = ByteBuffer.allocate(1024);

buffer.clear();
buffer.put(bt);                //这三句话一般都是连在一起用的。
buffer.flip();

buffer = Charset.forName("utf-8").newEncoder().encode((CharBuffer.wrap("liufu")))

#3:byte[] <<<<==============>>>>ByteBuf (Netty框架)

byte[] bt = new byte[1024];
bt = "hello word".getBytes("utf-8");
inputStream.read(bt);

// byte[]    ========>  ByteBuf
//当ByteBuf对象还没有创建的时候,可以这样创建。
ByteBuf buf = Unpooled.copiedBuffer(bt);
//但是如果ByteBuf已经创建了,直接向里面写数据就行了
out.writeBytes(bt);


//ByteBuf  =====>byte[]
byte[] bt = new byte[buf.readableBytes()];
buf.readBytes(bt);
共有 人打赏支持
粉丝 7
博文 100
码字总数 72832
×
刘付kin
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: