`
msn877763580
  • 浏览: 83747 次
  • 性别: 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

分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

    今天我们要深入学习的是Java中的两个重要类:ByteArrayInputStream和ByteArrayOutputStream,它们属于Java.io包,是处理内存中字节数组的流对象。 ByteArrayInputStream是InputStream的一个子类,它允许我们从字节...

    IO流 javaio java 流

    - 字节数组流(ByteArrayInputStream/ByteArrayOutputStream):在内存中操作字节数据。 - 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader...

    java io流PPT课件.pptx

    例如,FileInputStream和FileOutputStream分别用于读写文件,而ByteArrayInputStream和ByteArrayOutputStream则可以在内存中操作字节流。 2. 字符流:以Unicode字符为基本处理单位,由Reader和Writer两个抽象基类...

    javaIO详细讲解+详细案例

    ### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于处理数据的输入与输出。流(Stream)可以理解为一组有序的、有起点和终点的字节集合,...

    《JAVA_IO流学习总结》

    Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...

    Java IO

    Java IO的基本概念之一是流,它是一种数据传输的方式。Java中的流被抽象成一系列连续的数据元素,这些数据元素可以是字节或字符。流分为两种基本类型:输入流和输出流。输入流是从外部源读取数据到程序,而输出流则...

    Java IO流 总结

    Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...

    JAVA IO流宝典

    字节流主要有InputStream和OutputStream两个抽象基类,它们的子类如FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。字符流处理的是16位的Unicode字符,主要用于文本数据,其...

    java_io详解

    具体的数据源类如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以及提供装饰功能的类如`BufferedInputStream`、`BufferedOutputStream`、`DataInputStream`、`...

    通俗易懂的javaIO讲解

    ### 通俗易懂的Java IO讲解 在Java中,输入输出流(IO)是一个非常重要的概念,它涉及到了数据如何从一个地方传输到另一个地方。本文将深入浅出地介绍Java IO的基础概念,并通过实例帮助读者更好地理解这些概念。 ...

    深入分析javaIO的工作机制.doc

    在现代软件开发中,输入/输出(Input/Output,简称IO)是至关重要的一个环节,它不仅关乎着程序与外部世界的交互,更是影响应用程序性能的关键因素之一。随着大数据时代的到来,高效的IO处理能力变得尤为重要。Java...

    java_IO.rar

    而ByteArrayInputStream和ByteArrayOutputStream则允许在内存中操作字节数组,提供了一种灵活的数据存储方式。 8. **ObjectIO(09_ObjectIO.avi)**:进一步讲解如何使用ObjectInputStream和ObjectOutputStream进行...

    Java IO流文档

    在Java中,输入输出流(简称IO流)是用来处理文件读写的核心技术之一。它主要包括两类:以字节为导向的流和以字符为导向的流。 ##### 1.1 以字节为导向的流 以字节为导向的流是指按照字节来进行数据读写的流,适用...

    JAVAIO操作总结

    字节流以字节为单位进行数据传输,主要由InputStream和OutputStream家族构成,例如FileInputStream和FileOutputStream用于文件操作,ByteArrayInputStream和ByteArrayOutputStream则用于内存中的字节数组。...

    javaIO(java中的流的介绍)

    Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了一种机制,允许程序与外部资源(如文件、网络、硬件设备等)进行数据交换。在Java中,流(Stream)是IO系统的核心概念,...

    java io 流,文件读取操作

    Java IO 流、文件读取操作 Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流...

    IO笔记.zip关于javaIO流部分的详细笔记

    - ByteArrayInputStream和 ByteArrayOutputStream:内存中的字节流操作。 - DataInputStream和DataOutputStream:用于读写基本数据类型的字节流。 四、字符流 字符流包括Reader和Writer,适用于处理Unicode字符。...

Global site tag (gtag.js) - Google Analytics