目录
1.IO流的概述
IO 流是用于在程序与外部数据源(如文件、网络连接等)之间进行数据输入和输出操作的机制。
它主要具有以下特点:
1. 输入流:将数据从外部源读取到程序中。
2. 输出流:将程序中的数据发送到外部目标。
3. 分类:包括字节流和字符流,分别用于处理字节和字符数据。
4. 作用:实现数据的传输和交互,是程序与外界进行数据交换的重要途径。
2.IO流的分类
2.1. 字节流
以字节为单位进行数据传输,包括InputStream(输入字节流)和OutputStream(输出字节流)。
其中InputStream类和OutputStream类都为抽象类,我们实现的类都为InputStream和OutputStream的子类例如:
字节流的常见子类包括:
• FileInputStream:文件输入流,用于从文件中读取字节数据。
• BufferedInputStream:带缓冲区的输入字节流,提高读取性能。
• ObjectInputStream:对象字节输入流,用于读取对象数据。
• FileOutputStream:文件输出流,用于将字节数据写入文件。
• BufferedOutputStream:带缓冲区的输出字节流,提高写入性能。
• ObjectOutputStream:对象字节输出流,用于写入对象数据。
这些子类在字节流的基础上提供了不同的功能和特性,以满足不同的需求。例如,BufferedInputStream和BufferedOutputStream通过使用缓冲区来提高读写效率,而ObjectInputStream和ObjectOutputStream则用于对象的序列化和反序列化。
文件读取:
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("your_file_path")) {
int data;
while ((data = fis.read())!= -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件写入:
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamWriteExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("output_file_path")) {
String data = "这是要写入的字节数据";
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.2. 字符流
以字符为单位进行数据传输,包括Reader(输入字符流)和Writer(输出字符流)。
其中Reader类和Writer类都为抽象类,我们实现的类都为Reader和Writer的子类。
字符流是一种以字符为单位进行读写操作的流。字符流的两个抽象父类分别是字符输出流(Writer)和字符输入流(Reader)。Writer 类的子类包括 OutputStreamWriter 类,Reader 类的子类包括 InputStreamReader 类。字符流的常见子类及使用方法如下:
• FileReader:用于读取字符文件。
• FileWriter:用于写入字符文件。
• BufferedReader:提供缓冲功能的字符输入流,支持读取一行数据。
• BufferedWriter:带缓冲的字符输出流,支持写入字符串和换行操作。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CharacterStreamExample {
public static void main(String[] args) throws IOException {
// 创建一个 FileReader 对象,用于读取字符文件
FileReader reader = new FileReader("example.txt");
// 创建一个 BufferedReader 对象,提高读取性能
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine())!= null) {
System.out.println(line);
}
// 关闭资源
bufferedReader.close();
}
}