Java IO详解

发布时间 2023-03-25 18:57:03作者: 手可敲星辰脚驾七彩云

一、IO简介

1. 概念

 Java IO (Input/Output) 是 Java 编程语言对输入和输出(I/O)进行封装的一组类和接口,Java IO 提供了输入流和输出流的抽象,可以使开发者以相同的方式读写各种不同类型的数据,如文本、图像、音频、视频等等。

 Java IO 的基本操作都是围绕着流(Stream)对象展开的,流是一个抽象的概念,它是一系列连续的字节或字符,数据从一个端点流入,从另一个端点流出。Java IO 从两个维度来区分流,即字节流和字符流。

  • 字节流(Byte Stream):以字节为单位进行数据传输,一次处理一个字节,适合于处理二进制数据,如图像、音频、视频等等。

  • 字符流(Character Stream):以字符为单位进行数据传输,一次处理一个字符,适合于处理文本数据,如字符文件、字符串等等。

Java IO 主要包括以下几个包:

  • java.io:提供了各种用于读取和写入数据的类和接口。
  • java.nio:提供了对新输入/输出 (NIO) 的支持。
  • java.nio.channels:提供了可扩展的、非阻塞 I/O 操作,包括 Selector、Channel 等。
  • java.nio.charset:提供了在字节和 Unicode 字符之间进行编码和解码的类和接口。

在 Java IO 中,常用的类和接口包括:

  • InputStream/OutputStream:用于读取和写入字节数据。
  • Reader/Writer:用于读取和写入字符数据。
  • InputStreamReader/OutputStreamWriter:将字节流转换为字符流或将字符流转换为字节流。
  • FileReader/FileWriter:用于读取和写入字符文件。
  • FileInputStream/FileOutputStream:用于读取和写入字节文件。
  • BufferedReader/BufferedWriter:带有缓存的字符流,可以提高读写效率。
  • ByteArrayInputStream/ByteArrayOutputStream:用于读取和写入内存中的字节流。
  • CharArrayReader/CharArrayWriter:用于读取和写入内存中的字符流。
  • DataInputStream/DataOutputStream:用于读写基本数据类型和字符串。
  • PrintStream/PrintWriter:用于打印各种数据类型到输出流。
    除此之外,Java IO 还提供了一些其他的类和接口,如 ObjectInputStream/ObjectOutputStream、PipedInputStream/PipedOutputStream、ZipInputStream/ZipOutputStream 等等。

总之,Java IO 提供了一组强大的类和接口,可以方便地读取和写入各种不同类型的数据。