`
msn877763580
  • 浏览: 81147 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java IO 之ByteArrayInputStream & ByteArrayOutputStream

阅读更多

 

一、ByteArrayOutputStream

ByteArrayOutputStream(int size) 创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。

此类实现了一个输出流,缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。

关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。

ByteArrayOutputStream常用于存储数据以用于一次写入

 

二、ByteArrayInputStream

ByteArrayInputStream(byte[] buf) 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。

作用:把字节串/字节数组转换成一种输入流的形式,这样就可以被高级输入工具DataInputStream直接处理,比如处理成各种类型,double,float,char,int, short,long,或任何对象,或字符串,或媒体数据。把一块内存作为输入的一种方式。用处很多。

个人认为一个比较好的用途是在网络中读取数据包,由于数据包一般是定长的,我们可以先分配一个够大的byte数组,比如byte buf[]=new byte[1024];

然后调用某个方法得到网络中的数据包,例如:

Socket s=...;

DataInputStream dis=new DataInputStream(s.getInputStream());

dis.read(buf);//把所有数据存到buf中

ByteArrayInputStream bais=new ByteArrayInputStream(buf); //把刚才的部分视为输入流

DataInputStream dis_2=new DataInputStream(bais);

//现在可以使用dis_2的各种read方法,读取指定的字节

上面的示例的两次包装看上去有点多此一举,但使用ByteArrayInputStream的好处是关掉流之后它的数据仍然存在。

 

import java.io.*;
public class ByteStreamTest {
	public static void main(String[] args)throws Exception {
		
		ByteArrayOutputStream bOutput = new ByteArrayOutputStream(8);
		byte[] b = "abcde".getBytes();
		bOutput.write(b);
		for(int x=0; x<b.length; x++){
			System.out.print((char)b[x] +" ");
		}
		System.out.println(" ");
		
		ByteArrayInputStream bInput = new ByteArrayInputStream(b);
		System.out.println("转换成大写字母后");
		int c;
		for(int y=0; y<1; y++){
			// 注意:这里我们一个一个字节的读
			while((c=bInput.read())!=-1){
				System.out.print(Character.toUpperCase((char)c)+" ");
			}
			bInput.reset();
		}	
	}
}

 a b c d e  

转换成大写字母后

A B C D E 

 

参考:http://blog.csdn.net/rcoder/article/details/6118313

分享到:
评论

相关推荐

    深刻理解java io

    1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用 2) StringBufferInputStream:把一个String对象作为InputStream 3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作 4) ...

    教你彻底明白Java的IO系统

    在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型: 1.1 以字节为导向的stream 以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种...

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    java72-java-advance.rar

    a)java.sql b) java.util c) java.math d) java.io 2.不属于java.io包中的接口的一项是(C) a)DataInput b) DataOutput c) DataInputStream d) ObjectInput 3. ByteArrayOutputStream将下列哪一项作为输出流 C a)...

    Android实现压缩字符串的方法示例

    前言 Android端可以对字符串...import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutput

    BSONforJackson.zip

    示例代码:import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import com.fasterxml.jackson.databind.ObjectMapper; import de.undercouch.bson4jackson.BsonFactory; public ...

    Java-IO-Learning

    Java IO学习 FileInputStream,FileOutputstream 随机存取文件 ByteArrayOutputStream,ByteArrayInputStream

    Java程序设计语言期末试题

    彻底明白Java的IO系统 一. Input和Output 1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型: 1.1 以字节为...

    IO体系.java

    |--ObjectOutputStream/:将java对象的基本数据类型和图形写入到OutputStream。 | |--PipedOutputStream/:可以将管道输出流连接到管道输入流来创建通信管道。 | 用方法connect(PipedInputStream snk) 将此管道...

    android图片压缩工具类分享

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; ...

    Android开发之图片压缩工具类完整实例

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import android.graphics.Bitmap; import android.graphics.BitmapFactory; public class ImaZipUtil { /** * 压缩图片到指定宽高,...

    JDK_API_1_6

    Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功能。 类摘要 BufferedInputStream BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 ...

    跟汤老师学Java(第15季):I/O输入输出流

    本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程! 课程内容包括: 1.File类 2.IO流简介 3.流的分类  输入流、输出流  字节流、字符...

Global site tag (gtag.js) - Google Analytics