java常用类解析二:IO系统输入输出类

本文详细介绍了InputStream和OutputStream在数据处理中的角色,包括它们如何与各种数据源和目标交互,如字节数组、文件、管道以及网络等。通过示例代码展示了如何使用这两个类进行数据的读取和写入操作。

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

    InputStream的作用是用来表示那些从不同数据源产生输入的类。OutputStream决定了输出所要去往的目标

       数据源                             对应的类(都继承自InputStream)

(1)字节组                        ByteArrayInputStream [ByteArrayOutputStream]

(2)String对象                   StringBufferInputStream(已弃用)

(3)文件                           FileInputStream  [FileOutputStream]

(4)“管道”                     PipedInputStream  [PipedOutputStream]

(5)由其它种类的流组成的序列    SequenceInputStream

(6)其他数据源,如Internet

示例:

import java.io.ByteArrayInputStream;  
import java.io.ByteArrayOutputStream;  
import java.util.Arrays;  
/* 
 * ByteArrayInputStream(ByteArrayOutputStream)表示从字节数组产生输入(输出) 
 * 这个类其实就是对一个字节数组进行操作,把这个字节数组看成一个缓冲区 
 * 关闭方法是一个空方法,关闭后不影响其他方法 
 * 可以将数组定位到指定位置开始读/写,可以将数组从头开始读/写,可以查看数组还有几个字节可用 
 * 可以在某个位置做标记,可以返回到标记位置进行读/写 
 */  
public class ByteArrayInputStreamDemo {  
    public static void main(String[] args) {  
        // 输入流缓冲区(假设已经有若干字节)   
        byte[] inputBuff = new byte[] { 1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f' };  
        byte[] result = new byte[20];  
        ByteArrayInputStream inputStream = new ByteArrayInputStream(inputBuff);  
        // 将缓冲区的字节读入result数组并输出result   
        inputStream.read(result, 0, 20);  
        System.out.println(Arrays.toString(result));  
        // 将result数组写入输出流   
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
        outStream.write(result, 0, 20);  
        System.out.println(Arrays.toString(outStream.toByteArray()));  
    }  
  
}  

 

import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
  
/* 
 * FileInputStream从文件中产生输入流,FileOutputStream 
 * 把输出流输出到文件。读/写、打开和关闭都是调用本地方法 
 */  
public class FileInputStreamDemo {  
    public static void main(String[] args) throws IOException {  
        FileInputStream inputStream = null;  
        try {  
            inputStream = new FileInputStream(new File("file/bb.dat"));  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        }  
        // 读到一个字节数组   
        byte[] result = new byte[500];  
        // int b;   
        // while ((b = inputStream.read()) != -1)//读一个字节   
        // System.out.print((char) b);   
        inputStream.read(result);  
        // System.out.println(Arrays.toString(result));   
        inputStream.close();  
        FileOutputStream outputStream = null;  
        // true表示以追加的形式打开   
        outputStream = new FileOutputStream("file/bb.dat", true);  
        // 写入   
        outputStream.write((int) 'A');  
        outputStream.write(result);  
        outputStream.close();  
    }  
}  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值