IO流(Input/Output Stream)是Java中用于处理输入和输出的数据流。IO流提供了一种方便、统一的方式来读取和写入数据,无论是与文件、网络还是其他输入/输出源进行交互。
在Java中,输入和输出被抽象为字节流(Byte Stream)和字符流(Character Stream)。字节流用于处理二进制数据,而字符流则用于处理文本数据。
Java提供了一系列的输入流(InputStream)和输出流(OutputStream)类以及字符输入流(Reader)和字符输出流(Writer)类,用于不同的输入/输出场景。常见的IO流类包括:
- FileInputStream/FileOutputStream:用于处理文件的字节流;
- FileReader/FileWriter:用于处理文件的字符流;
- ByteArrayInputStream/ByteArrayOutputStream:用于处理字节数组的流;
- CharArrayReader/CharArrayWriter:用于处理字符数组的流;
- InputStreamReader/OutputStreamWriter:用于将字节流转换为字符流的桥梁;
- BufferedReader/BufferedWriter:提供缓冲功能,提高IO性能等。
通过IO流,我们可以从输入源读取数据或者将数据写入到输出目标。例如,从文件读取数据、将数据写入文件、从网络接收数据、发送数据到网络等。使用IO流的基本步骤如下:
1. 创建相应的输入流或输出流对象,可以是字节流或字符流的具体实现类。
2. 打开输入源或输出目标,如文件、网络连接等。
3. 通过流对象读取或写入数据。
4. 关闭流,释放资源。
示例代码如下所示,演示了使用字节流从文件中读取数据的过程:
import java.io.FileInputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("file.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
IO流在Java中是非常重要和常用的概念。