Java SE中文件输入输出的深入剖析
文章目录
-
- 📕1. File类的运用
-
-
- ✏️1.1 构造方法
- ✏️1.2 常用功能
-
- 📕2. I/O流概览
-
-
- ✏️2.1 I/O流的类别划分
- ✏️2.2 I/O体系架构
-
- 📕3. 字节流详解
-
-
- ✏️3.1 InputStream类解析
- ✏️3.2 OutputStream类解读
-
- 📕4. 字符流剖析
-
-
- ✏️4.1 Reader类探究
- ✏️4.2 Writer类分析
-
❗❗❗ 编者特别声明 : 本文分享的是博主日常开发中常用的I/O流相关类与方法,并非涵盖全部I/O流知识
📕1. File类的运用
此处主要阐述对文件的增删改查操作,并非针对文件内内容的操作
✏️1.1 构造方法
方法 | 说明 |
---|---|
File(File parent, String child) | 根据父目录与子文件路径,构建新的 File 实例 |
File(String pathname) | 按照文件路径创建新的 File 实例,路径可为绝对或相对 |
File(String parent, String child) | 凭借父目录路径与子文件路径,创建新的 File 实例 |
✏️1.2 常用功能
方法 | 说明 |
---|---|
getParent() | 回传 File 对象的父目录文件路径 |
getName() | 回传 File 对象的纯文件名称 |
getPath() | 回传 File 对象的文件路径 |
getAbsolutePath() | 回传 File 对象的绝对路径 |
getCanonicalPath() | 回传 File 对象经修饰的绝对路径 |
exists() | 判断 File 对象描述的文件是否真实存在 |
isDirectory() | 判断 File 对象代表的文件是否为目录 |
isFile() | 判断 File 对象代表的文件是否为普通文件 |
createNewFile() | 依据 File 对象,自动创建空文件,成功则返回 true |
delete() | 依据 File 对象,删除该文件,成功则返回 true |
deleteOnExit() | 依据 File 对象,标记文件待删除,删除动作于 JVM 运行结束时执行 |
list() | 回传 File 对象代表目录下的所有文件名 |
listFiles() | 回传 File 对象代表目录下的所有文件,以 File 对象形式呈现 |
mkdir() | 创建 File 对象代表的目录 |
mkdirs() | 创建 File 对象代表的目录,必要时创建中间目录 |
renameTo(File dest) | 进行文件改名,可视为剪切、粘贴操作 |
canRead() | 判断用户是否对文件有可读权限 |
canWrite() | 判断用户是否对文件有可写权限 |
📕2. I/O流概览
I/O即Input/Output的缩写。I/O技术是十分实用的技术,用于处理数据传输,像文件的读/写、网络通讯等场景都会用到。
在Java程序里,数据的输入/输出操作以“流(stream)”的形式开展。
java.io包中提供了各类“流”类与接口,用以获取不同种类的数据,并通过方法实现数据的输入或输出
✏️2.1 I/O流的类别划分
- 按操作数据单位不同分为:字节流(8 bit)、字符流(16 bit)
- 按数据流的流向不同分为:输入流、输出流
- 按流的角色不同分为:节点流、处理流
抽象基类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
✏️2.2 I/O体系架构
Java的io流涉及40多个类,实则规律明显,均由上述4个抽象基类派生而来

📕3. 字节流详解
✏️3.1 InputStream类解析
InputStream是抽象类,我们当下只关注从文件读取,所以用FileInputStream类实例化对象
- FileInputStream类的构造方法
方法 | 说明 |
---|---|
FileInputStream(File file) | 通过指定的File对象创建输入流 |
FileInputStream(String pathname) | 通过指定文件的路径字符串创建输入流 |
- FileInputStream类的常见功能
方法 | 说明 |
---|---|
int read() | 从输入流中读取一个字节的数据 |
int read(byte[] b) | 从输入流中读取一定数量的字节到字节数组中,返回长度 |
int read(byte[] b, int off, int len) | 最多读取 len – off 字节的数据到 b中,从 off 开始,返回实际读到的数量;-1表示已读完 |
void close() | 关闭字节流 |
✏️3.2 OutputStream类解读
OutputStream同样是抽象类,要使用需具体实现类。我们目前仍只关心写入文件,所以用FileOutputStream类实例化对象
- FileOutputStream的构造方法
方法 | 说明 |
---|---|
FileOutputStream(File file) | 通过指定的File对象创建输出流 |
FilenOutputStream(String name) | 通过指定文件的路径字符串创建输出流 |
- FileOutputStream的常用功能
方法 | 说明 |
---|---|
write(int b) | 写入一个字节到文件 |
write(byte[] b) | 将一个字节数组写入文件 |
write(byte[] b, int off, int len) | 从字节数组的指定位置开始,写入指定长度的字节到文件 |
close() | 关闭输出流,释放相关资源 |
📕4. 字符流剖析
✏️4.1 Reader类探究
FileReader类主要用于从文件读取字符数据,是字符输入流,继承自InputStreamReader(转换流),抽象基类为Reader。可通过构造方法传入文件路径创建
- FileReader的构造方法
方法 | 说明 |
---|---|
FileReader(File file) | 创建与指定文件对象相关联的FileReader |
FileReader(String fileName) | 创建与指定文件路径名相关联的FileReader |
- FileReader的常用功能
方法 | 说明 |
---|---|
int read() | 从输入流中读取一个字符,返回该字符的整数表示(到达文件末尾返回 -1) |
int read(char[] cbuf) | 将字符读入数组,返回读取的长度 |
void close() | 关闭该流并释放与之关联的所有资源 |
✏️4.2 Writer类分析
FileWriter类用于将字符数据写入文件
- FileWriter的常用功能
方法 | 说明 |
---|---|
write(int c) | 写入单个字符到文件中 |
write(char[] cbuf) | 将字符数组写入文件中 |
write(String str) | 写入字符串到文件中 |
write(String str, int off, int len) | 写入字符串的一部分到文件中 |
flush() | 刷新缓冲区,将数据写入文件 |
close() | 关闭文件并释放相关资源 |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...