File类
java.io.File
类是文件和目录 路径名 的抽象表示,主要用于文件和目录的创建、查找和删除等操作。Java虚拟机中的一个 File 实例表示一个路径,这个路径可能对应一个文件或一个目录。
file类的实例所表示的路径,可能存在于磁盘上,也可能磁盘上根本不存在。
public class File
implements Serializable, Comparable<File>
File类是可变的,一旦创建,就不可变
private final String path;
File类提供了用于操作文件或目录的方法,但并不支持访问文件的内容。
常量
不同的系统平台下,这四个常量的取值也不相同
在Windows 平台下
- pathSeparator 和 pathSeparatorChar 对应的是 ;
- separator 和 separatorChar 对应的是 \
Unix / Linux / MAC OS X 平台下
- pathSeparator 和 pathSeparatorChar 对应的是 :
- separator 和 separatorChar 对应的是 /
Windows 下文件路径各层级之间使用 \ 分隔,在代码中 \ 需要转义(使用 \ 转义),
当然还有另外一种方法来分隔,就是使用 / 来分隔。
构造方法
构造方法 | 描述 |
---|---|
public File(String pathname) | 通过将给定路径名字转换为抽象路径来创建一个新File实例 |
public File(String parent,String child) | 根据parent路径的名字符串和child路径名字符创建一个file实例 |
public File(File parent,String child) | 根据parent抽象路径的名和child路径名字符创建一个file实例 |
public File(URI uri) | 通过将给定的file:URL转换为一个抽象路径来创建一个新的实例 |
//通过给定路径字符串创建实例
File file = new File("D:\\斗破苍穹.txt");
File file1 = new File("D:\\temp","凡人修仙传.txt");
//fod 表示不知道是文件还是文件夹
File fod = new File("D:\\temp");
File file2 = new File(fod, "吞噬星空.txt");
实例方法
方法签名 | 返回值 | 描述 |
---|---|---|
exists() | boolean | 判断文件或目录是否存在。 |
isFile() | boolean | 判断是否为文件。 |
isDirectory() | boolean | 判断是否为目录。 |
isHidden() | boolean | 判断文件是否为隐藏文件。 |
isAbsolute() | boolean | 判断路径是否为绝对路径。 |
getPath() | String | 获取文件路径。 |
lastModified() | long | 获取文件的最后修改时间。 |
length() | long | 获取文件的长度(字节数)。 |
list() | String[] | 获取目录下的文件和子目录名的字符串数组。 |
getParent() | String | 获取文件或目录的父路径。 |
getAbsolutePath() | String | 获取文件或目录的绝对路径。 |
getCanonicalPath() | String | 获取文件或目录的规范路径。 |
canRead() | boolean | 判断文件或目录是否可读。 |
canWrite() | boolean | 判断文件或目录是否可写。 |
canExecute() | boolean | 判断文件或目录是否可执行。 |
mkdir() | boolean | 创建目录。 |
mkdirs() | boolean | 创建目录及其所有不存在的父目录。 |
createNewFile() | boolean | 创建文件。 |
renameTo(File dest) | boolean | 重命名文件或目录为指定的名称。 |
delete() | boolean | 删除文件或目录。 |
getFreeSpace() | long | 获取文件所在磁盘的可用空间大小。 |
toString() | String | 获取文件路径的字符串表示形式。 |
示例1:
public class FileTest2 {
public static void main(String[] args) throws IOException, InterruptedException {
//创建文件
File file = new File("D:/Test/小说/小时代1.txt");
System.out.println(file.getParentFile());
//判断父目录是否存在
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
// 判断文件是否存在
if (!file.exists()) {
try {
file.createNewFile(); // 创建文件
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//重命名
File file1 = new File("D:/Test/小说/小时代.txt");
System.out.println(file1.getAbsolutePath());
System.out.println(file.renameTo(file1));
File file2 = new File("D:/Test/小时代.txt");
System.out.println(file.renameTo(file2));
}
}
示例2:
public class FileTest3 {
public static void main(String[] args) throws InterruptedException {
//删除
File file3 = new File("d:/ebook/dpcq.txt");
File file4 = new File("d:/ebook/d.txt");
System.out.println(file3.delete());//执行后立即删除文件
file4.deleteOnExit(); //执行后当JVM停止时删除文件
Thread.sleep(10*1000); //线程休眠10S
}
}
比较File实例
尽管 File 类重写了 equals 方法,但除非两个 File 实例对应的路径完全相同在 equals 方法中判断的是自然比较的结果是不是 0 ,如果为 0 返回 true在自然比较中实际是在比较两个 File 实例 getPath() 值的忽略大小写比较
Path类
Path
是 Java 中用于表示文件或目录路径的类。它提供了一种平台无关的方式来操作和处理文件系统上的文件和目录。
使用 Path
类可以执行以下操作:
1.创建一个 Path
实例:可以使用 Paths
类的 get()
方法创建 Path
实例。例如:
Path path = Paths.get("C:\\myfolder\\myfile.txt");
2.获取路径信息:可以使用 Path
实例的方法来获取路径的各个组成部分,如文件名、父路径、根路径等。例如:
Path fileName = path.getFileName(); // 获取文件名(包括扩展名)
Path parentPath = path.getParent(); // 获取父路径
Path rootPath = path.getRoot(); // 获取根路径
3.判断路径属性:可以使用 Path
实例的方法来判断路径的属性,如是否为绝对路径、是否为相对路径等。例如:
boolean isAbsolute = path.isAbsolute(); // 判断是否为绝对路径
boolean isRelative = path.isRelative(); // 判断是否为相对路径
4.连接路径:可以使用 Path
实例的 resolve()
方法连接多个路径,生成新的路径。例如:
Path newPath = path.resolve("subfolder").resolve("anotherfile.txt");
5.解析路径:可以使用 Path
实例的 resolveSibling()
方法解析相对路径或绝对路径中的兄弟路径。例如:
Path resolvedPath = path.resolveSibling("siblingfile.txt");
6.转换为字符串:可以使用 Path
实例的 toString()
方法将 Path
对象转换为表示路径的字符串。例如:
String pathString = path.toString();