文件内容的读写——数据流
在 Java 中,文件操作通常使用流对象(Stream)来完成。流类似于水流,可以按不同大小传输数据,例如一次读取 100 个字节或 1 个字节。
1. 字节流
1)InputStream
InputStream 是字节流的输入抽象类,实际使用时需要实例化其子类 FileInputStream。
FileInputStream 构造方法:
| 签名 | 说明 |
|---|---|
| FileInputStream(File file) | 使用 File 对象构造文件输入流 |
| FileInputStream(String path) | 使用文件路径字符串构造输入流 |
常用方法:
| 返回类型 | 签名 | 说明 |
|---|---|---|
| int | read() | 一次读一个字节,读完返回 -1 |
| int | read(byte[] b) | 一次读取字节数组长度的数据,返回 -1 表示结束 |
| int | read(byte[] b, int off, int len) | 从 off 开始读取 len 个字节,返回 -1 表示结束 |
| void | close() | 关闭输入流 |
代码示例:
InputStream inputStream = null;
try {
inputStream = new FileInputStream("example.png");
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} finally {
if (inputStream != null) {
inputStream.close();
}
}
推荐使用 try-with-resources 语法自动关闭资源,因为文件流不属于内存管理范畴,垃圾回收不会自动处理,必须手动关闭以释放文件描述符。
try (InputStream inputStream = new FileInputStream("example.png")) {
() {
inputStream.read();
(a == -) {
;
}
System.out.println(a);
}
}


