Java IO流详解(定义分类及用法示例)

Java IO流详解(定义分类及用法示例)-mikechen

什么是Java IO流

Java I/O流是Java中用于进行输入和输出操作的机制。流是一种从一个地方到另一个地方的数据传输方式,可以通过不同的方式访问数据,包括文件、网络连接、内存缓冲区等。Java I/O流可以根据数据的方向分为输入流和输出流,根据数据的类型分为字节流和字符流。

 

Java IO流分类

Java I/O流按照数据类型可以分为字节流和字符流两种类型,按照数据流向可以分为输入流和输出流两种类型。

1.按照数据类型分类

如下图所示:

Java IO流详解(定义分类及用法示例)-mikechen

  1. 字节流(Byte Stream):字节流主要用于读取和写入二进制数据,以字节为单位进行读取和写入。字节流的主要类和接口包括InputStream、OutputStream、FileInputStream、FileOutputStream、DataInputStream和DataOutputStream等。
  2. 字符流(Character Stream):字符流主要用于读取和写入文本数据,以字符为单位进行读取和写入。字符流的主要类和接口包括Reader、Writer、FileReader、FileWriter、BufferedReader和BufferedWriter等。
  3. 输入流(Input Stream):输入流主要用于从数据源(如文件、网络连接、内存缓冲区等)读取数据。输入流的主要类和接口包括InputStream、Reader、FileInputStream、FileReader、ByteArrayInputStream和CharArrayReader等。
  4. 输出流(Output Stream):输出流主要用于将数据写入到目标位置(如文件、网络连接、内存缓冲区等)。输出流的主要类和接口包括OutputStream、Writer、FileOutputStream、FileWriter、ByteArrayOutputStream和CharArrayWriter等。

 

2.按照数据流分类

Java I/O流还可以按照功能进行分类,例如:

  1. 缓冲流(Buffered Stream):缓冲流是指对输入流和输出流进行缓冲处理,以提高读写数据的效率。缓冲流的主要类和接口包括BufferedReader、BufferedWriter、BufferedInputStream和BufferedOutputStream等。
  2. 数据流(Data Stream):数据流是指对基本数据类型和字符串进行读写操作的流,可以将数据按照特定格式进行读写。数据流的主要类和接口包括DataInputStream和DataOutputStream等。
  3. 对象流(Object Stream):对象流是指对Java对象进行读写操作的流,可以将Java对象以二进制的方式进行读写。对象流的主要类和接口包括ObjectInputStream和ObjectOutputStream等。
  4. 转换流(Conversion Stream):转换流是指将字节流和字符流进行转换的流,可以将字节流转换为字符流,也可以将字符流转换为字节流。转换流的主要类和接口包括InputStreamReader和OutputStreamWriter等。

 

Java IO流使用步骤

Java I/O流的使用方法通常包括以下步骤:

1.创建输入输出流

创建输入流或输出流对象,通常需要提供文件名、文件路径、网络连接地址或内存缓冲区等参数。

 

2.读出写入数据

通过流对象读取或写入数据,可以使用read()和write()方法来进行操作。

 

3.关闭流

关闭流对象,释放资源。

代码示例如下:

import java.io.*;

public class IODemo {
    public static void main(String[] args) {
        try {
            // 创建一个输入流对象,读取文件内容
            FileInputStream fis = new FileInputStream("input.txt");

            // 创建一个输出流对象,将读取的内容写入文件
            FileOutputStream fos = new FileOutputStream("output.txt");

            // 定义一个缓冲区,用于存储读取的数据
            byte[] buffer = new byte[1024];
            int length;

            // 从输入流中读取数据,并将数据写入到输出流中
            while ((length = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, length);
            }

            // 关闭输入流和输出流
            fis.close();
            fos.close();

            System.out.println("文件读写完成!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

Java IO流常用类

Java I/O流的常用类和接口包括:

  1. InputStream和OutputStream:这是Java I/O字节流的基本类,分别用于读取和写入字节流。
  2. Reader和Writer:这是Java I/O字符流的基本类,分别用于读取和写入字符流。
  3. FileInputStream和FileOutputStream:这是基于文件的字节流类,用于从文件中读取和写入数据。
  4. FileReader和FileWriter:这是基于文件的字符流类,用于从文件中读取和写入数据。
  5. ByteArrayInputStream和ByteArrayOutputStream:这是基于内存缓冲区的字节流类,用于从内存中读取和写入数据。
  6. CharArrayReader和CharArrayWriter:这是基于内存缓冲区的字符流类,用于从内存中读取和写入数据。
  7. BufferedReader和BufferedWriter:这是缓冲字符流类,可以提高读取和写入字符流的效率。

总之,Java I/O流提供了一种灵活的方式来读取和写入数据,可以用于文件、网络连接、内存缓冲区等各种场景,提供了字节流和字符流两种类型,并提供了一系列常用的类和接口。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法