I/O 流的基本概念
-
流:在 Java 中,流是一种数据传输的方式,它可以被视为数据的流动序列。
-
输入流:用于从数据源读取数据。
-
输出流:用于向目的地写入数据。
-
字节流:处理字节数据,适用于二进制文件等。
-
字符流:处理字符数据,适用于文本文件等。
Java I/O 类库的主要类
-
字节流
InputStream
: 所有字节输入流的超类。OutputStream
: 所有字节输出流的超类。FileInputStream
: 从文件系统中的文件中读取字节。FileOutputStream
: 向文件系统中的文件写入字节。ByteArrayInputStream
: 从字节数组读取数据。ByteArrayOutputStream
: 写入字节数组。BufferedInputStream
: 提供带缓冲区的字节流。BufferedOutputStream
: 提供带缓冲区的字节流。DataInputStream
: 用于读取基本数据类型。DataOutputStream
: 用于写入基本数据类型。
-
字符流
Reader
: 所有字符输入流的超类。Writer
: 所有字符输出流的超类。FileReader
: 从文件系统中的文件中读取字符。FileWriter
: 向文件系统中的文件写入字符。CharArrayReader
: 从字符数组读取数据。CharArrayWriter
: 写入字符数组。BufferedReader
: 提供带缓冲区的字符流。BufferedWriter
: 提供带缓冲区的字符流。StringReader
: 从字符串读取数据。StringWriter
: 写入字符串。
其他相关类
File
: 代表文件和目录路径名的抽象表示形式。RandomAccessFile
: 用于读写文件的流,可以随机访问文件的任何位置。PipedInputStream
和PipedOutputStream
: 用于线程间通信的管道流。PrintStream
和PrintWriter
: 用于打印输出的类。
使用 I/O 流的常见操作
-
文件复制:使用字节流或字符流复制文件。
-
文件读写:读取和写入文件。
-
缓冲区使用:使用缓冲区提高读写效率。
-
序列化和反序列化:使用
ObjectInputStream
和ObjectOutputStream
对象进行序列化和反序列化。 -
异常处理:处理可能出现的 I/O 异常,如
IOException
。
示例代码
下面是一个简单的示例,展示如何使用 FileInputStream
和 FileOutputStream
复制一个文件:
Java
1import java.io.FileInputStream;
2import java.io.FileOutputStream;
3import java.io.IOException;
4
5public class FileCopyExample {
6 public static void main(String[] args) {
7 try (
8 FileInputStream in = new FileInputStream("source.txt");
9 FileOutputStream out = new FileOutputStream("destination.txt")
10 ) {
11 byte[] buffer = new byte[1024];
12 int bytesRead;
13 while ((bytesRead = in.read(buffer)) != -1) {
14 out.write(buffer, 0, bytesRead);
15 }
16 } catch (IOException e) {
17 e.printStackTrace();
18 }
19 }
20}