- Java中的
File类(位于java.io包)是一种对系统文件抽象化的类,注意目录也可以是一个File实例; - 用户通过创建一个File实例,从此这个对象在这个Java程序就代表了这个文件本身;
- File实例对象允许你对这个文件(或者目录)进行一些外部属性的查看和检查,比如:创建、删除文件/目录;检查文件是否存在、获取大小、最后修改时间等;列出目录中的文件和子目录;检查读写权限、设置文件为只读等。
- 但注意,File对象实例不能对文件内部文字进行编辑,不涉及文件内容的读写,只是对文件本身的属性进行查看;
一、File类的构造方法
首先重要的是如何创建一个File对象实例,File类的构造方法非常的简单,虽然主要有两种形态(传一个参的和传两个参的),但完全符合正常的逻辑,大同小异:
1. 通过一个路径字符串构造
// 传入一个系统的路径,可以是文件或者目录,随便
File file = new File("D:/test/test.txt");
2. 通过两个路径字符串构造
// 方式1:传入两个字符串参数
File file1 = new File("D:/test", "test.txt");
// 方式2:File对象和字符串参数
File parentDir = new File("D:/test");
File file2 = new File(parentDir, "test.txt");
注意:传入的路径也可以是相对路径;传入的路径也可以不存在,因为我们有相应创建文件的方法,参考下面的章节的方法演示;
二、File类的两个静态变量
在Java中,File类提供了两个重要的静态变量,用于处理与不同系统的文件路径分隔符和路径列表分隔符:
1. File.separator
- 作用:表示系统的默认名称分隔符,用于分隔文件路径中的目录或文件名。例如,Windows系统使用反斜杠(
\),而Linux系统使用正斜杠(/)。 - 类型:
String。 - 使用场景:构建跨平台的文件路径时,避免硬编码分隔符。例如:
String separator=File.separator;
String path = "dir1" + separator + "dir2" + separator + "file.txt";
// 结果是:dir1\dir2\file.txt
2. File.pathSeparator
- 作用:表示系统的路径的分隔符,用于分隔多个路径字符串;例如,Windows系统使用分号(
;),而Unix/Linux系统使用冒号(:)。 - 类型:
String。 - 使用场景:拼接多个路径时,确保跨平台兼容性。例如:
String paths = "path1" + File.pathSeparator + "path2";
三、File对象的方法
用的时候查就可以了,只有你想不到没有它办不到,面面俱到;
|
方法 |
说明 |
|
|
检查文件/目录是否存在 |
|
|
是否为文件 |
|
|
是否为目录 |
|
|
获取文件大小(字节) |
|
|
获取完整路径 |
|
|
获取文件名(window系统下文明名称包含后缀即使后缀被隐藏) |
|
|
创建单级目录 / 创建多级目录 |
|
|
创建新文件 |
|
|
删除文件或空目录 |
|
|
获取目录下的文件名数组 / 获取File对象数组 |
File file = new File("test.txt");
// 检查文件/目录是否存在
boolean exists = file.exists();
// 判断是否是文件
boolean isFile = file.isFile();
// 判断是否是目录
boolean isDir = file.isDirectory();
// 判断是否是隐藏文件
boolean isHidden = file.isHidden();
// 判断是否是绝对路径
boolean isAbsolute = file.isAbsolute();
File file = new File("src/test.txt");
// 获取文件名/目录名
String name = file.getName(); // 返回"test.txt"
// 获取父目录路径字符串
String parent = file.getParent(); // 返回"src"
// 获取父目录File对象
File parentFile = file.getParentFile();
// 获取相对路径
String path = file.getPath(); // 返回"src/test.txt"
// 获取绝对路径
String absPath = file.getAbsolutePath(); // 返回完整路径
// 获取规范路径(解析"."和"..")
String canonicalPath = file.getCanonicalPath();
File file = new File("newfile.txt");
boolean created = file.createNewFile(); // 创建新文件,当且仅当该文件不存在时创建成功
// 创建单级目录,当且仅当该文件不存在时创建成功
File dir1 = new File("newDir");
boolean success1 = dir1.mkdir();
// 创建多级目录,当且仅当该文件不存在时创建成功
File dir2 = new File("parent/child/grandchild");
boolean success2 = dir2.mkdirs();
// mkdir()只能创建单级目录,父目录必须存在;mkdirs()会创建所有不存在的父目录
File file = new File("fileToDelete.txt");
boolean deleted = file.delete();
// 删除文件或空目录;delete()只能删除空目录或文件,要删除非空目录需要递归删除所有子项
// 程序退出时删除
file.deleteOnExit();
遍历目录内容,这个还是很重要的;
File dir = new File("D:/test");
// 获取目录下所有文件和子目录名称
String[] list = file.list();
// 使用增强for遍历也行,就是一个普通的列表,没啥特殊的;
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
// 获取目录下所有文件和子目录File对象
File[] files = dir.listFiles();
3183

被折叠的 条评论
为什么被折叠?



