文档章节

obj 《---》byte[] 《---》ByteBuffer

刘付kin
 刘付kin
发布于 2016/12/08 21:40
字数 429
阅读 9
收藏 0

#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);

© 著作权归作者所有

共有 人打赏支持
刘付kin
粉丝 6
博文 100
码字总数 72832
作品 0
深圳
Java集合系列之Connection与Map接口宏观把控

Java集合系列之Connection与Map接口宏观把控 Hello,大家好,元旦快到了,这里提前祝大家元旦快乐,出行注意安全,回家的小伙伴能早日和家人见面,开开心心过元旦。Ok,切入主题,这篇文章,我...

2017/12/29
0
0
Netty 4.0 源码分析(四):ByteBuf

Netty是基于流的消息传递机制。Netty框架中,所有消息的传输都依赖于ByteBuf接口,ByteBuf是Netty NIO框架中的缓冲区。ByteBuf接口可以理解为一般的Byte数组,不过Netty对Byte进行了封装,增...

GreenDay
2014/09/13
0
0
smart-socket实现RPC

smart-socket实现RPC RPC是目前被广泛应用于互联网服务的一项技术,关于它的基本介绍大家可通过百度了解一下,此处不再赘述。正所谓读万卷书不如行万里路,原理性的文章看的再多都不如亲自实...

三刀蜀黍
07/01
0
0
mina read方法出现BufferUnderflowException异常的解决办法

现象: 先连续发几十个很小很小的包(<10 byte) 再突然发一个大小64byte的包 这时你会发现mina就会出现以下错误 java.nio.BufferUnderflowExceptionat java.nio.HeapByteBuffer.get(Unknown ...

JavaGG
2009/02/16
7.3K
4
java.nio.ByteBuffer 以及flip,clear及rewind区别

Buffer 类 定义了一个可以线性存放primitive type数据的容器接口。Buffer主要包含了与类型(byte, char…)无关的功能。 值得注意的是Buffer及其子类都不是线程安全的。 每个Buffer都有以下的...

snail-
2016/01/21
114
0

没有更多内容

加载失败,请刷新页面

加载更多

Win10内部更新:警告用户别用chrome和Firefox

简评:别和 Chrome 和 Firefox 约行不,我 Edge 明明更美、屁股更翘、更性感。。。 微软正在测试 Windows 10 的一个更新:警告用户不要安装 Chrome 和 Firefox。是测试人员发现的这个新警告,...

极光推送
30分钟前
2
0
Java并发编程高阶技术 高性能并发框架源码解析与实战

全网唯一深度解析并发编程框架disruptor底层源码课程,助你成为并发编程高手,拿下高薪 网盘地址下载

qq__2304636824
今天
1
0
day92-20180918-英语流利阅读-待学习

健身最大的敌人不是懒惰,而是逞强 Daniel 2018-09-19 1.今日导读 还记得 2008 年北京奥运会运动员刘翔的退赛风波吗?那天几乎所有中国人都将视线聚焦在了鸟巢体育馆 110 米栏的项目上,迫不...

飞鱼说编程
今天
8
0
70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部