一位Java编程大师把I/O简单的分成了四部分(本人学艺不精,文章如有任何理论问题可能是没学会):

  1. 确定源
  2. 打开流
  3. 操作流
  4. 关闭流

流可以理解为从数据源到数据接收端的有序数据管道,允许程序以统一方式访问不同类型的输入输出源。
I/O是Input(输入)和Output(输出)的缩写,表示计算机在内存与外部存储或设备之间的数据传输过程。
在Java中,I/O流通过"流(Stream)"来抽象表示数据的读写操作,所有相关类都位于java.io包中。

流的分类

按数据流向分类

输入流(InputStream/Reader):从数据源读取数据到内存
输出流(OutputStream/Writer):从内存写入数据到目的地

按数据类型分类

字节流(Byte Streams):以字节为单位读写,适合所有类型文件:
InputStream/OutputStream
字符流(Character Streams):以字符为单位读写,适合文本文件:
Reader/Writer

常用I/O类

// 字节流
FileInputStream     // 文件输入字节流
FileOutputStream    // 文件输出字节流
BufferedInputStream // 缓冲输入字节流
BufferedOutputStream // 缓冲输出字节流

// 字符流
FileReader          // 文件输入字符流
FileWriter          // 文件输出字符流
BufferedReader      // 缓冲输入字符流
BufferedWriter      // 缓冲输出字符流

基本使用模式

// 1. 声明流对象(确定源)
FileInputStream fis = null;
try {
    // 2. 创建流对象(打开流)
    fis = new FileInputStream("source.txt");
    
    // 3. 操作流(读取数据)
    int data;
    while ((data = fis.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    // 4. 关闭流
    if (fis != null) {
        try {
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

四部分

1,确定源

确定源是I/O操作的第一步,指的是明确数据的来源和目的地。在Java中,常见的源包括:文件路径(如 “source.txt”)、URL、字节数组等。

// 1. 声明流对象(确定源)
FileInputStream fis = null;

2,打开流

创建流对象会建立程序与数据源之间的连接通道。这一步可能涉及操作系统资源的分配(如文件句柄),因此必须在操作前完成。同时注意打开流时可能会抛出 IOException(如文件不存在),因此通常放在 try 块中。

// 2. 创建流对象(打开流)
fis = new FileInputStream("source.txt");

3,操作流

这是I/O的核心步骤,实际进行数据的读取或写入。操作方式(逐字节、缓冲块、按行等)取决于具体的业务需求和性能考虑。操作过程中需要正确处理数据格式和编码,特别是字符流涉及编码转换。

    // 3. 操作流(读取数据)
    int data;
    while ((data = fis.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
} 

4,关闭流

注意:无论你在之前实现了什么操作,最后一定要记得在finally中使用close();
关闭流会释放底层系统资源(如文件句柄、网络连接)。如果不关闭,可能导致资源泄漏,在长时间运行的程序中耗尽系统资源。

finally {
    // 4. 关闭流
    if (fis != null) {
        try {
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

更多推荐