1. 文件路径
绝对路径
绝对路径 (absolute path) : 以一个盘符开头的路径,就是绝对路径
例如这里的
D:\java\IntelliJ IDEA Community Edition 2021.2.2\bin\idea64.exe
就是绝对路径
相对路径
相对路径 (relative path) 一般是以.
或者..
开头的路径.一般会有一个基准,去找对应的路径.
.
就是当前目录 ..
当前目录的上一目录
例如
- 以
D:\java\IntelliJ IDEA Community Edition 2021.2.2\bin
作为基准 相对路径可以写成.\idea64.exe
- 以
D:\java\IntelliJ IDEA Community Edition 2021.2.2
作为基准 相对路径可写成.\bin\idea64.exe
- 以
D:\java\IntelliJ IDEA Community Edition 2021.2.2\bin\idea64.exe
作为基准 相对路径可用写成..\idea64.exe
2. Java中操作文件
Java 中通过 java.io.File
类来对一个文件(包括目录)进行抽象的描述。
2.1 File 的常用属性,方法和构造方法
属性
修饰符及类型 | 属性 | 说明 |
---|---|---|
static String | pathSeparator | 依赖于系统的路径分隔符,String 类型的表示 |
static char | pathSeparator | 依赖于系统的路径分隔符,char 类型的表示 |
构造方法
签名 | 说明 |
---|---|
File(File parent, String child) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例 |
File(String pathname) | 根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径 |
File(String parent, String child) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示 |
方法
方法签名 | 说明 |
---|---|
String getParent() | 返回 File 对象的父目录文件路径 |
String getName() | 返回 FIle 对象的纯文件名称 |
String getPath() | 返回 File 对象的文件路径 |
String getAbsolutePath() | 返回 File 对象的绝对路径 |
String getCanonicalPath() | 返回 File 对象的修饰过的绝对路径 |
boolean exists() | 判断 File 对象描述的文件是否真实存在 |
boolean isDirectory() | 判断 File 对象代表的文件是否是一个目录 |
boolean isFile() | 判断 File 对象代表的文件是否是一个普通文件 |
boolean createNewFile() | 根据 File 对象,自动创建一个空文件。成功创建后返回 true |
boolean delete() | 根据 File 对象,删除该文件。成功删除后返回 true |
void deleteOnExit() | 根据 File 对象,标注文件将被删除,删除动作会到JVM 运行结束时才会进行 |
String[] list() | 返回 File 对象代表的目录下的所有文件名 |
File[] listFiles() | 返回 File 对象代表的目录下的所有文件,以 File 对象表示 |
boolean mkdir() | 创建 File 对象代表的目录 |
boolean mkdirs() | 创建 File 对象代表的目录,如果必要,会创建中间目录 |
boolean renameTo(File dest) | 进行文件改名,也可以视为我们平时的剪切、粘贴操作 |
boolean canRead() | 判断用户是否对文件有可读权限 |
boolean canWrite() | 判断用户是否对文件有可写权限 |
注意: 这里的有File对象,不代表这个文件一定真实存在
使用示例1: get相关方法的使用
import java.io.File;
import java.io.IOException;
public class FileDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("./test.txt");//这里的test.txt不一定存在
System.out.println(file.getParent());
System.out.println(file.getName());
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
}
}
运行结果截图:
使用示例2: 普通文件的创建和删除
import java.io.File;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
File file = new File("./test.txt");
System.out.println("创建前:");
System.out.println("文件是否真实存在: "+file.exists());
System.out.println("文件是否是一个目录: "+file.isDirectory());
System.out.println("文件是否是一个普通文件: "+file.isFile());
System.out.println("创建后:");
System.out.println("文件创建是否成功: "+file.createNewFile());
System.out.println("文件是否真实存在: "+file.exists());
System.out.println("文件是否是一个目录: "+file.isDirectory());
System.out.println("文件是否是一个普通文件: "+file.isFile());
System.out.println("再次创建:");
System.out.println("文件创建是否成功: "+file.createNewFile());
}
}
运行结果截图:
使用示例3: deleteOnExit 的使用
import java.io.File;
import java.io.IOException;
public class FileDemo3 {
public static void main(String[] args) throws IOException, InterruptedException {
File file = new File("./test.txt");
System.out.println(file.exists());
System.out.println(file.createNewFile());
System.out.println(file.exists());
Thread.sleep(3000);
file.deleteOnExit();
System.out.println(file.exists());
}
}
代码截图:
发现运行过程中,三秒之后,输出文件存在之后,文件被删除
使用示例4: 单级目录的创建
import java.io.File;
public class FileDemo4 {
public static void main(String[] args) {
File file = new File("test");
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.mkdir());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
}
}
运行截图: