一、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中的两个重要类:ByteArrayInputStream和ByteArrayOutputStream,它们属于Java.io包,是处理内存中字节数组的流对象。 ByteArrayInputStream是InputStream的一个子类,它允许我们从字节...
- 字节数组流(ByteArrayInputStream/ByteArrayOutputStream):在内存中操作字节数据。 - 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader...
例如,FileInputStream和FileOutputStream分别用于读写文件,而ByteArrayInputStream和ByteArrayOutputStream则可以在内存中操作字节流。 2. 字符流:以Unicode字符为基本处理单位,由Reader和Writer两个抽象基类...
### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于处理数据的输入与输出。流(Stream)可以理解为一组有序的、有起点和终点的字节集合,...
Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...
Java IO的基本概念之一是流,它是一种数据传输的方式。Java中的流被抽象成一系列连续的数据元素,这些数据元素可以是字节或字符。流分为两种基本类型:输入流和输出流。输入流是从外部源读取数据到程序,而输出流则...
Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...
字节流主要有InputStream和OutputStream两个抽象基类,它们的子类如FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。字符流处理的是16位的Unicode字符,主要用于文本数据,其...
具体的数据源类如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以及提供装饰功能的类如`BufferedInputStream`、`BufferedOutputStream`、`DataInputStream`、`...
### 通俗易懂的Java IO讲解 在Java中,输入输出流(IO)是一个非常重要的概念,它涉及到了数据如何从一个地方传输到另一个地方。本文将深入浅出地介绍Java IO的基础概念,并通过实例帮助读者更好地理解这些概念。 ...
在现代软件开发中,输入/输出(Input/Output,简称IO)是至关重要的一个环节,它不仅关乎着程序与外部世界的交互,更是影响应用程序性能的关键因素之一。随着大数据时代的到来,高效的IO处理能力变得尤为重要。Java...
而ByteArrayInputStream和ByteArrayOutputStream则允许在内存中操作字节数组,提供了一种灵活的数据存储方式。 8. **ObjectIO(09_ObjectIO.avi)**:进一步讲解如何使用ObjectInputStream和ObjectOutputStream进行...
在Java中,输入输出流(简称IO流)是用来处理文件读写的核心技术之一。它主要包括两类:以字节为导向的流和以字符为导向的流。 ##### 1.1 以字节为导向的流 以字节为导向的流是指按照字节来进行数据读写的流,适用...
字节流以字节为单位进行数据传输,主要由InputStream和OutputStream家族构成,例如FileInputStream和FileOutputStream用于文件操作,ByteArrayInputStream和ByteArrayOutputStream则用于内存中的字节数组。...
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。它提供了一种机制,允许程序与外部资源(如文件、网络、硬件设备等)进行数据交换。在Java中,流(Stream)是IO系统的核心概念,...
Java IO 流、文件读取操作 Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流...
- ByteArrayInputStream和 ByteArrayOutputStream:内存中的字节流操作。 - DataInputStream和DataOutputStream:用于读写基本数据类型的字节流。 四、字符流 字符流包括Reader和Writer,适用于处理Unicode字符。...