在Java中,IO(Input/Output)流是用于处理输入和输出操作的一种抽象方式。这些流可以处理多种类型的数据,如字节、字符、对象等。通过IO流,Java程序可以与其他设备(如文件、网络套接字、内存等)进行通信。
以下是一些常见的Java IO流类及其用途:
-
字节流(Byte Streams)
InputStream
:这是所有字节输入流的超类。它提供了基本的读取字节数据的方法,如read()
。FileInputStream
:用于从文件中读取字节数据。BufferedInputStream
:带有缓冲区的输入流,用于提高读取效率。ByteArrayInputStream
:从字节数组中读取数据的输入流。ObjectInputStream
:用于反序列化对象,从输入流中读取并恢复对象。
OutputStream
:这是所有字节输出流的超类。它提供了基本的写入字节数据的方法,如write()
。FileOutputStream
:用于将数据写入文件。BufferedOutputStream
:带有缓冲区的输出流,用于提高写入效率。ByteArrayOutputStream
:在内存中创建一个字节数组缓冲区,所有数据写入此输出流都会保存在该字节数组中。ObjectOutputStream
:用于序列化对象,将对象写入输出流中。
-
字符流(Character Streams)
Reader
:这是所有字符输入流的超类。它提供了基本的读取字符数据的方法,如read()
。FileReader
:用于从文件中读取字符数据。BufferedReader
:带有缓冲区的读取器,可以一次读取一行数据。CharArrayReader
:从字符数组中读取数据的读取器。InputStreamReader
:将字节流转换为字符流的桥接器。
Writer
:这是所有字符输出流的超类。它提供了基本的写入字符数据的方法,如write()
。FileWriter
:用于将数据写入文件。BufferedWriter
:带有缓冲区的写入器,可以提高写入效率。CharArrayWriter
:在内存中创建一个字符数组缓冲区,所有数据写入此输出流都会保存在该字符数组中。OutputStreamWriter
:将字节流转换为字符流的桥接器。
-
其他特殊流
PrintStream
:用于方便地输出各种数据类型的值,如整数、浮点数、字符串等。它通常与System.out
关联。PrintWriter
:类似于PrintStream
,但它是字符流,可以更方便地处理字符数据。StringReader
和StringWriter
:分别在内存中提供字符数据的读取和写入。SequenceInputStream
:可以将多个输入流合并为一个输入流。DataInputStream
和DataOutputStream
:这些流允许你以二进制格式读取和写入Java基本数据类型。
以上只是Java IO流中的一部分,但已经涵盖了大部分常用的流类。在实际编程中,根据具体需求选择合适的流类是非常重要的。