在java网络编程中,字节数组很重要,它可以传输任何资料(文本,音频,视频,图片等),因此掌握字节数组和其它数据类型的相互转化尤为重要。

示例代码:

package com.lky.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import com.lky.model.Student; /**
* @ClassName: objectToByteArray
* @Description: 字节数组工具类
* @author lky
* @date 2015年10月26日
* @vesion 1.0
*/
public class objectToByteArray { private static Log log = LogFactory.getLog(objectToByteArray.class);
private static Integer MAX_LENGTH = 2048;// 每次从流中读入多少字节 /**
* @Title: getByteArray
* @Description: 从输入流中读取数据,并返回字节数组
* @param in 输入流
*/
public static byte[] getByteArray(InputStream in) {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); try {
byte[] buffer = new byte[MAX_LENGTH];
int len = 0; while ((len = in.read(buffer, 0, buffer.length)) != -1) {
baos.write(buffer, 0, len);
baos.flush();
buffer = new byte[MAX_LENGTH];
} } catch (Exception e) { } finally {
try {
if (in != null) {
in.close();
}
if (baos != null) {
baos.close();
}
} catch (Exception e2) {
log.info("字节流关闭异常!!!");
}
}
return baos.toByteArray();
} /**
* @Title: ObjectToByte
* @Description: 将对象转化为字节数组
* @param object
*/
public static byte[] ObjectToByte(Object object) {
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null; try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos); oos.writeObject(object);
oos.flush(); } catch (Exception e) {
log.info("object转化为byte数组异常!!!");
} finally {
try {
if (oos != null) {
oos.close();
}
if (baos != null) {
baos.close();
}
} catch (Exception e2) {
log.info("字节流关闭异常!!!");
}
}
return baos.toByteArray();
} /**
* @Title: byteArrayToObject
* @Description: 将字节数组转化为对象
* @param buffer
*/
public static Object byteArrayToObject(byte[] buffer) {
Object object = null;
ByteArrayInputStream bais = null;
ObjectInputStream oss = null; try {
bais = new ByteArrayInputStream(buffer);
oss = new ObjectInputStream(bais); object = oss.readObject(); } catch (Exception e) {
log.info("object转化为byte数组异常!!!");
} finally {
try {
if (oss != null) {
oss.close();
}
if (bais != null) {
bais.close();
}
} catch (Exception e2) {
log.info("字节流关闭异常!!!");
}
}
return object;
} public static void main(String args[]){
Student student=new Student();
student.setId(1);
student.setLog("log");
student.setName("lky");
System.out.println(student); byte[] buffer=ObjectToByte(student); System.out.println(buffer.length);
System.out.println((Student)byteArrayToObject(buffer)); }
}

java--字节数组输入、输出流的更多相关文章

  1. Java知多少(69)面向字节的输入输出流

    字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据.InputStream类和OutputStream类是所有字节流的父类. InputStream类 ...

  2. 第27章 java I/O输入输出流

    java I/O输入输出流 1.编码问题 import java.io.UnsupportedEncodingException; /** * java涉及的编码 */ public class En ...

  3. Java复习7.输入输出流

    Java复习7.输入输出流 20131005 前言: Java中涉及数据的读写,都是基于流的,这一块的知识相当重要,而且在Java中的数据,char字符是16bit的,所以存在字节流和字符流的区别.如 ...

  4. 八. 输入输出(IO)操作4.面向字节的输入输出流

    字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据.InputStream类和OutputStream类是所有字节流的父类. InputStream类 ...

  5. java中基本输入输出流的解释(flush方法的使用)

    转自:http://fsz521job.itpub.net/post/5606/34827 网络程序的很大一部分是简单的输入输出,即从一个系统向另一个系统移动字节.字节就是字节,在很大程度上,读服务器 ...

  6. Java I/O输入输出流详解

    一.文件的编码               开发时一定要注意项目默认的编码!!!!!!!!               文件操作的时候一定要记得关闭!!!!!!!!        ASCII:美国标准 ...

  7. Java IO学习--输入输出流

    一.Java IO的定义 I/O:输入输出系统,由输入输出控制系统和外围设备两部分组成. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输 ...

  8. Java工具类-输入输出流

    输入输出流 1.概念 输入输出流:文件复制,上传 输出流: System.out.println() 写操作,程序将字符流写入到"目的地",比如打印机和文件等 输入流 :Scann ...

  9. Java I/O输入输出流

    IO流的复习总结 ------注:蓝色背景段落是例子:红色背景的字段IO流的功能类. 编码问题 String s = "威力锅ABC";  //utf-8编码中文占用三个字节,英文 ...

  10. Java的IO输入输出流类的介绍(有图)

    一.字节流 1.InputStream/OutputStream(输入流与输出流几乎一一对应) 读取的方法   int read()   int read(byte[] buffer)   int r ...

随机推荐

  1. C++11 tuple

    tuple元组定义了一个有固定数目元素的容器,其中的每个元素类型都可以不相同,这与其他容器有着本质的区别.是对pair的泛化. 首先来介绍元组的创建和元组元素的访问.通过make_tuple()创建元 ...

  2. [转] Transitions: Going from Shots to the Insulin Pump

    Part three of our article series on the common phases of type 2 diabetes management By Lance Porter ...

  3. Sorting File Contents and Output with sort

     Sorting File Contents and Output with sort   Another very useful command to use on text file is  so ...

  4. TCP Linger的坑

    昨天和同事奋战几个小时,解决了一个linger造成的bug. 现象是这样的,这是一个我从原型接手,扩充了各种功能成为可用代码的epoll实现的非阻塞socket server程序,接收大量的短连接,测 ...

  5. 监听视图树 OnGlobalLayoutListener

    背景 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们写一个控件 public class MyImageView extends ImageView ...

  6. codevs 2800 送外卖(状压dp)

    /* f[i][j] 表示走过的点构成i状态 且最后到达的点为j时的最优解 在那最后一个状态就是(1<<n+1)-1 每个点都到达 在由此回到0 */ #include<iostre ...

  7. Java分页类 Page

    import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Iterator; ...

  8. spring源码测试

    org.springframework.context.annotation.ComponentScanParserTests.componentScanWithAutowiredQualifier( ...

  9. CHAR数组转成STRING:C++

    有些时候,键入了CHAR数组却不会知道到底有多长,是不是很差评呢?但是,转成STRING就可以啦QWQ #include <iostream> #include <cstdio> ...

  10. 关于@font-face的一些问题

    @font-face 能够加载服务器端的字体文件,让客户端显示客户端所没有安装的字体.[微软的IE 5已经是开始支持这个属性,但是只支持微软自有的.eot (Embedded Open Type) 格 ...