四个环节带你搞定Java中的I/O
一位Java编程大师把I/O简单的分成了四部分(本人学艺不精,文章如有任何理论问题可能是没学会):
- 确定源
- 打开流
- 操作流
- 关闭流
流
流可以理解为从数据源到数据接收端的有序数据管道,允许程序以统一方式访问不同类型的输入输出源。
I/O是Input(输入)和Output(输出)的缩写,表示计算机在内存与外部存储或设备之间的数据传输过程。
在Java中,I/O流通过"流(Stream)"来抽象表示数据的读写操作,所有相关类都位于java.io包中。
流的分类
按数据流向分类
输入流(InputStream/Reader):从数据源读取数据到内存
输出流(OutputStream/Writer):从内存写入数据到目的地
按数据类型分类
字节流(Byte Streams):以字节为单位读写,适合所有类型文件:
InputStream/OutputStream
字符流(Character Streams):以字符为单位读写,适合文本文件:
Reader/Writer
常用I/O类
// 字节流
FileInputStream // 文件输入字节流
FileOutputStream // 文件输出字节流
BufferedInputStream // 缓冲输入字节流
BufferedOutputStream // 缓冲输出字节流
// 字符流
FileReader // 文件输入字符流
FileWriter // 文件输出字符流
BufferedReader // 缓冲输入字符流
BufferedWriter // 缓冲输出字符流
基本使用模式
// 1. 声明流对象(确定源)
FileInputStream fis = null;
try {
// 2. 创建流对象(打开流)
fis = new FileInputStream("source.txt");
// 3. 操作流(读取数据)
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 4. 关闭流
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四部分
1,确定源
确定源是I/O操作的第一步,指的是明确数据的来源和目的地。在Java中,常见的源包括:文件路径(如 “source.txt”)、URL、字节数组等。
// 1. 声明流对象(确定源)
FileInputStream fis = null;
2,打开流
创建流对象会建立程序与数据源之间的连接通道。这一步可能涉及操作系统资源的分配(如文件句柄),因此必须在操作前完成。同时注意打开流时可能会抛出 IOException(如文件不存在),因此通常放在 try 块中。
// 2. 创建流对象(打开流)
fis = new FileInputStream("source.txt");
3,操作流
这是I/O的核心步骤,实际进行数据的读取或写入。操作方式(逐字节、缓冲块、按行等)取决于具体的业务需求和性能考虑。操作过程中需要正确处理数据格式和编码,特别是字符流涉及编码转换。
// 3. 操作流(读取数据)
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
4,关闭流
注意:无论你在之前实现了什么操作,最后一定要记得在finally中使用close();
关闭流会释放底层系统资源(如文件句柄、网络连接)。如果不关闭,可能导致资源泄漏,在长时间运行的程序中耗尽系统资源。
finally {
// 4. 关闭流
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
更多推荐
所有评论(0)