❗❗❗
编者特别声明 : 本篇博客分享的是仅博主本人在日常开发中经常用到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() |
关闭文件并释放相关资源。 |