一、什么是文件
简单来说,文件就是用来保存数据的地方,比如大家经常使用的 word 文档,txt 文档, excel 文件...都是文件,它既可以保存一张图片,也可以保存视频,声音...
二、文件流
文件在程序中是以流的形式来操作的
- 基本概念介绍
- 流:数据在数据源 (文件) 和程序 (内存) 之间经历的路径
- 输入流:数据从数据源 (文件) 到程序 (内存) 的路径
- 输出流:数据从程序 (内存) 到数据源 (文件) 的路径
- 关系图如下

三、文件的基本操作
File 类的关系图

1. 文件的创建
(1)提供三类构造器
- new File(String pathname) //根据路径构建一个 File 对象
- new File(File parent,String child) //根据父目录文件+子路径构建
- new File(String parent,String child) //根据父目录+子路径构建
(2)创建文件的操作:调用 createNewFile() 方法,通过路径直接指定文件创建的位置
(3)注意点
- 路径写法
- 系统中的文件路径:"D:\develop"
- 程序中的文件路径:"D:\develop"(需要加上转义符)
- createNewFile() 方法会抛出异常,需要捕获或者抛出
第一类构造器
根据路径构建一个 File 对象:new File(String pathname)
说明:一步到位型,直接指定文件名和文件所在的路径
java
public class newFile {
public static void main(String[] args) {
String pathname = "C:\\Users\\jackson\\Desktop\\file.txt";
File file = new File(pathname);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}第二类构造器
根据父目录文件+子路构建:new File(File parent,String child)
如何理解?
相当于把第一类构造器中的方法拆分为两个步骤,这样可以更显然的指定文件名称,体现文件的层级关系
说明:这里制定了父类文件作为路径创建子文件,这样更安全
java
public class newFile {
public static void main(String[] args) {
File parentFile = new File("C:\\Users\\jackson\\Desktop"); // 创建父类文件对象
String filename = "file.txt"; // 指定创建文件的名称
File file = new File(parentFile, filename);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}第三类构造器
根据父目录+子路径构建:new File(String parent,String child)
说明:父类目录、子类文件都可以通过字符串指定,更灵活而且结构也更加清晰
java
public class newFile {
public static void main(String[] args) {
String parentPath = "C:\\Users\\jackson\\Desktop"; // 创建父类文件对象
String filePath = "file.txt"; // 指定创建文件的名称
File file = new File(parentPath, filePath);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}2. 文件的常用方法
注意:文件的大小是按字节计算的
| 方法 | 描述 |
|---|---|
| getName | 返回文件或目录的名称。 |
| getAbsolutePath | 返回文件或目录的绝对路径。 |
| getParent | 返回文件或目录的父目录。 |
| length | 返回文件的长度(大小)。 |
| exists | 检查文件或目录是否存在。 |
| isFile | 检查路径是否为文件。 |
| isDirectory | 检查路径是否为目录。 |
java
public class newFile {
public static void main(String[] args) {
File file = new File("C:\\Users\\jackson\\Desktop\\file.txt");
System.out.println("文件的名称:" + file.getName());
System.out.println("文件的绝对路径:" + file.getAbsolutePath());
System.out.println("文件的父目录:" + file.getParent());
System.out.println("文件的长度:" + file.length());
System.out.println("文件的是否存在:" + file.exists());
System.out.println("是否为文件:" + file.isFile());
System.out.println("是否为目录:" + file.isDirectory());
}
}输出如下
java
文件的名称:file.txt
文件的绝对路径:C:\Users\jackson\Desktop\file.txt
文件的父目录:C:\Users\jackson\Desktop
文件的长度:0
文件的是否存在:true
是否为文件:true
是否为目录:false3.目录的操作
注意:在 Java 中,目录是一种特殊的文件
(1)创建一级目录
调用方法:mkdir()
java
public class newFile {
public static void main(String[] args) {
String parentPath= "C:\\Users\\jackson\\Desktop";
String directory = "Java";
File file = new File(parentPath, directory);
file.mkdir();
System.out.println("是为目录:" + file.isDirectory());
System.out.println("文件路径:" + file.getAbsolutePath());
}
}输出
java
是为目录:true
文件路径:C:\Users\jackson\Desktop\Java(2)创建多级目录
调用方法:mkdirs()
java
public class newFile {
public static void main(String[] args) {
// 首先创建一级目录
String parentPath= "C:\\Users\\jackson\\Desktop";
String directory = "Java";
File file = new File(parentPath, directory);
file.mkdir();
// 创建多级目录
String directorys = "a\\b\\c";
File file1 = new File(file, directorys);
file1.mkdirs();
}
}目录关系图如下
java
Java
├── a
│ └── b
│ └── c(3)目录的删除
调用方法:delete()
注意:目录的删除操作针对的是空目录,如果目录下有文件或者其他文件,需要先删除,否则会删除失败
java
public class newFile {
public static void main(String[] args) {
String filePath = "C:\\Users\\jackson\\Desktop\\Java\\";
File file = new File(filePath);
if(file.exists()){
if (file.delete()) {
System.out.println("文件删除成功");
}
}
}
}