ByteArrayInputStream与ByteArrayOutputStream类

本文介绍如何使用ByteArrayInputStream和ByteArrayOutputStream类实现内存中的字节流读写操作,通过编程实例展示了如何将输入流中的所有英文字母转换为大写字母。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ByteArrayInputStream与ByteArrayOutputStream类
 
  • ByteArrayInputStream和ByteArrayOutputStream,用于以IO流的方式来完成对字节数组内容的读写,来支持类似内存虚拟文件或者内存映象文件的功能。
  • ByteArrayInputStream的两个构造函数:
       ByteArrayInputStream(byte[] buf)  //以字节数组做为数据源 
       ByteArrayInputStream(byte[] buf,int offset,int length)  //从字节数组中的offset位置开始的长度为length的字节做为数据源
  • ByteArrayOutputStream的两个构造函数:  //下面两种方法创建的缓冲区在数据过多时,会自动增长
       ByteArrayOutputStream()  //创建一个有32个字节的缓冲区 
       ByteArrayOutputStream(int)  //创建指定大小(int)的缓冲区
 
我们需要在内存中使用虚拟内存内容时,就可以使用ByteArrayInputStream和ByteArrayOutputStream来进行操作
 
编程实例:编写一个把输入流中所有英文字母变成大写字母,然后将结果写入到一个输出流对象。用这个函数来将一个字符串中的所有字符转换成大写。
 
 
//ByteArrayTest.java  //启动类
 
import java.io.*;
 
public class ByteArrayTest{
   pubblic static void main(String[] args){
      String tmp = "abcdefghijklmnopqrst";
      byte[] src = tmp.getBytes();
      ByteArrayInputStream input = new ByteArrayInputStream(src);
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      tranform(input,output);
      byte[] result = output.toByteArray();  //返回一个字节数组
      System.out.println(new String(result));   //把字节数组中的所有数据转换成字符串
   }
  
   //transform函数的作用是用于将输入流当中的数据读取出来,然后将它进行转换(使用两个抽象基类InputStream和OutputStream做为参数可以达到通用性,方便调用)
   publci static void transform(InputStream in, OutputStream out){
      int ch = 0;
         try{
            while((ch = in.read()) != -1){  //判断读取是否结果
               int upperCh = /*(int)*/ Character.toUpperCase((char)ch);  //字符包装类Character有一个方法toUpperCase可以将字符变为大写,这时用到强转换,将int型数据转换为字符型(char类型数据可以自动转换为int类型,但int类型数据需要强转换成char类型)
               out.write(upperCh);
            }
         }
         catch(Exception e){
            e.printStackTrace();
         } 
   }
}
 
  • StringReader和StringWriter类来以字符IO流的方式处理字符串,这两个类分别对应ByteArrayInputStream和ByteArrayOutputStream
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值