Java IO流(Input/Output Stream)是Java中用于处理输入输出操作的一种机制。
IO流可以从不同的数据源读取数据,或者将数据写入到不同的目标。根据处理的数据类型,IO流可以分为二进制IO流和文本IO流。
一、二进制IO流:
二进制IO流主要用于处理非文本数据,如图片、音频、视频等。在Java中,二进制IO流的基类是`InputStream`和`OutputStream`。常用的二进制IO流有:
- `FileInputStream`:从文件中读取字节数据的输入流。
- `FileOutputStream`:向文件中写入字节数据的输出流。
- `BufferedInputStream`:带缓冲区的字节输入流。
- `BufferedOutputStream`:带缓冲区的字节输出流。
- `DataInputStream`:从输入流中读取基本数据类型的输入流。
- `DataOutputStream`:向输出流中写入基本数据类型的输出流。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BinaryIOExample {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt");
int data;
while ((data = fis.read()) != -1) {
fos.write(data);
}
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、文本IO流:
文本IO流主要用于处理文本数据。在Java中,文本IO流的基类是`Reader`和`Writer`。常用的文本IO流有:
- `FileReader`:从文件中读取字符数据的输入流。
- `FileWriter`:向文件中写入字符数据的输出流。
- `BufferedReader`:带缓冲区的字符输入流。
- `BufferedWriter`:带缓冲区的字符输出流。
- `InputStreamReader`:将字节输入流转换为字符输入流。
- `OutputStreamWriter`:将字符输出流转换为字节输出流。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextIOExample {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("output.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
fw.write(line);
fw.flush();
}
br.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、IO流的优势:
1. 通用性:IO流提供了一种通用的方式来处理各种输入输出源,如文件、网络连接、内存等。通过使用IO流,可以方便地读取和写入不同类型的数据,而无需关心底层的数据存储和传输细节。
2. 抽象层次高:IO流将输入输出操作抽象为一系列的对象和方法,使得程序员可以专注于业务逻辑,而不需要关心底层的操作系统和硬件实现。这有助于提高代码的可读性和可维护性。
3. 可扩展性:Java IO库提供了许多不同类型的流,可以根据需要组合使用。例如,可以使用缓冲流提高读写性能,使用数据流处理基本数据类型,使用对象流处理对象等。这种设计使得IO流具有很强的可扩展性,可以满足各种复杂场景的需求。
4. 异常处理:IO流操作可能会抛出`IOException`异常,这是一种受检异常。通过使用try-catch语句处理这些异常,可以确保程序在遇到错误时能够正常运行,并提供相应的错误处理逻辑。
5. 资源管理:Java 7引入了try-with-resources语句,它可以自动关闭实现了`AutoCloseable`接口的资源。这使得在使用IO流时,可以更方便地管理资源,避免因忘记关闭资源而导致的资源泄露问题。
标签:Java,IO,java,二进制,io,import,文本 From: https://blog.csdn.net/2301_79600015/article/details/139629093