71- IO流概述及分类

一、概述

I/O(Input/Output)流是用于数据输入和输出的机制。它是计算机程序与外部世界(文件、网络连接、设备等)进行交互的一种方式。

在计算机中,数据通常以流的形式进行传输。I/O 流提供了一种流式传输数据的方式,程序可以从流中读取数据(输入)或向流中写入数据(输出)。I/O 流可以连接到不同的数据源和目标,如文件、网络套接字、内存、控制台等。

I/O 流提供了一组类和接口用于实现不同的输入和输出需求。这些类包括处理文件的 FileInputStream、FileOutputStream、FileReader、FileWriter,处理缓冲的 BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter,处理对象的 ObjectInputStream、ObjectOutputStream 等。

使用 I/O 流时,通常需要进行打开、读取/写入、关闭等操作。为了确保资源正确关闭,可以使用 try-with-resources 语句来自动管理流的生命周期。

二、IO流分类

1.按照流的方向分类:

  • 输入流(Input Streams):输入流从外部读取数据并将其提供给程序。它们是数据的来源,通常用于读取文件、网络套接字、内存等。在Java中,输入流的基本抽象类是InputStream和Reader。常用的输入流类包括FileInputStream、FileReader、ByteArrayInputStream、BufferedInputStream等。
  • 输出流(Output Streams):输出流从程序中获取数据并将其写入到外部。它们是数据的目标,通常用于写入文件、网络套接字、内存等。在Java中,输出流的基本抽象类是OutputStream和Writer。常用的输出流类包括FileOutputStream、FileWriter、ByteArrayOutputStream、BufferedOutputStream等。

输入流和输出流在Java I/O中是互相独立的,不会互相干扰。

2.按照操作文件类型分类:

  • 字节流(Byte Streams):字节流用于操作二进制文件,适合处理图像、音频、视频等非文本文件。常用的字节流类包括FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。
  • 字符流(Character Streams):字符流用于操作纯文本文件,能够正确地处理字符编码,适合处理包含文本内容的文件。常用的字符流类包括FileReader、FileWriter、BufferedReader、BufferedWriter等。

三、IO流体系

Java I/O(Input/Output)流体系是Java标准库中用于读取和写入数据的一组类和接口。I/O流可以分为字节流和字符流两类,其中字节流用于读取二进制数据,字符流则用于读取文本数据。

Java I/O流体系主要包括以下四个抽象类:

  1. InputStream与OutputStream:InputStream是所有字节输入流的基类,OutputStream是所有字节输出流的基类,它们都定义了读取或写入单个字节到字节数组的方法。

  2. Reader与Writer:Reader是所有字符输入流的基类,Writer是所有字符输出流的基类,它们都定义了读取或写入单个字符或字符数组的方法。

除此之外,Java I/O还涉及到一些常用的实现类和接口,比如File、RandomAccessFile、ByteArrayInputStream、ByteArrayOutputStream、BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter等。

常见的具体的实现类:

1.InputStream(字节输入流):
  • FileInputStream:从文件中读取字节数据的输入流。
  • ByteArrayInputStream:从字节数组中读取字节数据的输入流。
  • PipedInputStream:与PipedOutputStream配合使用,在多线程之间进行管道通信。
2.OutputStream(字节输出流):
  • FileOutputStream:将字节数据写入文件的输出流。
  • ByteArrayOutputStream:将字节数据写入字节数组的输出流。
  • PipedOutputStream:与PipedInputStream配合使用,在多线程之间进行管道通信。
3.Reader(字符输入流):
  • FileReader:从文件中读取字符数据的输入流。
  • CharArrayReader:从字符数组中读取字符数据的输入流。
  • InputStreamReader:将字节流转换为字符流的输入流,支持指定字符编码。
4.Writer(字符输出流):
  • FileWriter:将字符数据写入文件的输出流。
  • CharArrayWriter:将字符数据写入字符数组的输出流。
  • OutputStreamWriter:将字符流转换为字节流的输出流,支持指定字符编码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值