原文网址:Java--字节内存流--ByteArrayInputStream与ByteArrayOutputStream_IT利刃出鞘的博客-CSDN博客
说明
本文介绍Java的字节内存流的用法。
概述
如果要进行IO操作,但是不生成文件,就可以使用内存来实现输入与输出的操作。
对于内存流,java.io包里面提供了两组操作:
以下是以字节内存流操作为主;重点看一下ByteArrayInputStream、ByteArrayOutputStream的继承结构与构造方法:

需求
使用字节内存流,将“"Hello World ~ !"转为大写字母。
代码
- package com.example.a;
-
- import java.io.*;
-
- public class Demo {
- public static void main(String[] args) throws IOException {
- String str = "Hello World ~ !";
- InputStream input = new ByteArrayInputStream(str.getBytes());
- OutputStream output = new ByteArrayOutputStream();
-
- int readResult = 0 ;
- while ((readResult = input.read()) != -1) {
- output.write(Character.toUpperCase(readResult));
- }
- System.out.println(output);
- input.close();
- output.close();
- }
- }
结果
HELLO WORLD ~ !
需求
使用内存字节流,将两个文件的内容读出来,然后合并到内存中。
代码
- package com.example.a;
-
- import java.io.*;
-
- public class Demo {
- public static void main(String[] args) throws IOException {
- File file1 = new File("D:" + File.separator + "Document"
- + File.separator + "Document" + File.separator + "test1.txt");
- File file2 = new File("D:" + File.separator + "Document"
- + File.separator + "Document" + File.separator + "test2.txt");
-
- InputStream input1 = new FileInputStream(file1);
- InputStream input2 = new FileInputStream(file2);
-
- ByteArrayOutputStream output = new ByteArrayOutputStream();
-
- int temp = 0;
- while ((temp = input1.read()) != -1) {
- output.write(temp);
- }
- while ((temp = input2.read()) != -1) {
- output.write(temp);
- }
-
- byte[] data = output.toByteArray();
-
- output.close();
- input1.close();
- input2.close();
- System.out.println(new String(data));
- }
- }