文档章节

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

刘付kin
 刘付kin
发布于 2016/12/08 21:40
字数 429
阅读 8
收藏 0
点赞 0
评论 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
JAVA中如何从高端到低端设备进行数据互传?

JAVA开发,一般是服务器之间的传送数据比较多,但是有时候会从服务器向手机等低端设备传送数据。所以,进行数据转换就势在必行了。以下是进行数据转换的实现代码: //这是服务器端的一个数据...

taaaa
2012/09/05
0
0
Java NIO 学习笔记 - ByteBuffer

分类: java 2011-12-26 10:3522人阅读评论(0)收藏举报 在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访...

liangxiao
2012/04/23
0
0
java nio(nio机制buffer及buffer优化)

深入Buffer: 下面,我们看下NIO中buffer的两个重要的组成部分: buffer的状态变量和buffer的访问方法; 状态变量是buffer内部计数系统的关键,在每一次的read/write过程中,buffer的状态变量都是...

Mr&Cheng
2013/01/27
0
0
NIO API 详解大全

NIO API主要集中在java.nio和它的subpackages中: java.nio 定义了Buffer及其数据类型相关的子类。其中被java.nio.channels中的类用来进行IO操作的ByteBuffer的作用非常重要。 java.nio.cha...

唐玄奘
2017/12/04
0
0
android视频编解码中buffer赋值的问题

问题是ByteBuffer类的buffer对象只是在ByteBuffer buffer = ByteBuffer.wrap( mPixel );中初始化了,而其他没发现哪里对其有操作,为什么每次在循环体里执行这句话的时候 VideoBit.copyPixel...

遗天补
2014/11/13
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

代码生成利器:IDEA 强大的 Live Templates

代码生成利器:IDEA 强大的 Live Templates

qwfys
22分钟前
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
26分钟前
1
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
29分钟前
0
0
日常运维--rsync同步工具

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而...

chencheng-linux
33分钟前
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
45分钟前
1
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
0
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
1
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
0
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
1
0
rsync工具介绍/rsync通过ssh同步

rsync工具介绍 数据备份是必不可少,在Linux系统下数据备份的工具很多,其中重点介绍就是rsync工具,rsync不仅可以远程同步数据,还可以本地同步数据,且不会覆盖以前的数据在已经存在的数据...

Hi_Yolks
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部