所有分类
  • 所有分类
  • 未分类

Java之IO–字节内存流(ByteArrayInputStream与ByteArrayOutputStream)

简介

说明

本文介绍Java的字节内存流的用法。

概述

如果要进行IO操作,但是不生成文件,就可以使用内存来实现输入与输出的操作。

对于内存流,java.io包里面提供了两组操作:

  • 字节内存流:ByteArrayInputStream、ByteArrayOutputStream
  • 字符内存流:CharArrayReader 、CharArrayWriter

以下是以字节内存流操作为主;重点看一下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));
    }
}
0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录