File类
概念:代表物理盘符中的一个文件或者文件夹。
方法:
public boolean CreateNewFile()
当且仅当指定的文件名不存在时创建一个指定的新的、空的文件。创建成功返回true,如果指定文件名已存在返回false。
public boolean mkdir()
创建一个指定路径名的文件夹。当且仅当文件夹被创建时返回true,否则返回false。
public boolean delete()
删除一个指定的文件或文件夹,文件夹必须为空才能被删除。当且仅当指定的文件或文件夹被删除时返回true,否则返回false。
public boolean exists()
检查指定的文件或文件夹是否存在。当且仅当指定的文件或者文件夹存在时返回true,否则返回false。
public File[] listFiles()
列出目录中的所有内容,返回一个指定路径名中的文件数组,如果指定的路径名不代表一个文件夹(目录)就返回null。
public boolean renameTo(File dest)
重命名一个路径名所指定的文件。当且仅当修改操作成功时返回true,否则返回false。
1. 文件分割符
// 输出:
// 路径分隔符:Windows下为 ; Unix下为 :
// 名称分隔符:Windows下为 \ Unix下为 /
System.out.println("路径分隔符:"+ File.pathSeparator);
System.out.println("名称分隔符:"+File.separator);
2. 文件的基本操作
// 1.创建文件
File file = new File("/Users/admin/Downloads/data.txt");
if (!file.exists()) {
boolean flag = file.createNewFile();
System.out.println("创建状态:" + flag);
}
// 2.删除文件
// 2.1 直接删除
/* System.out.println("删除结果:"+file.delete()); */
// 2.2 使用JVM退出时删除(不是自己删除)
file.deleteOnExit();
//调用休眠程序观察删除操作
Thread.sleep(5000);
//3.获取文件信息
System.out.println("文件绝对路径:" + file.getAbsolutePath());
System.out.println("获取路径:" + file.getPath());
System.out.println("获取父目录:" + file.getParent());
System.out.println("获取文件名称:" + file.getName());
System.out.println("获取文件长度:" + file.length());
System.out.println("获取文件最后修改时间:" + new Date(file.lastModified()).toLocaleString());
//4.判断
System.out.println("是否可写:" + file.canWrite());
System.out.println("是否可读:" + file.canRead());
System.out.println("是否隐藏:" + file.isHidden());
System.out.println("是否是文件:" + file.isFile());
System.out.println("是否是文件夹:" + file.isDirectory());
/*
文件绝对路径:/Users/admin/Downloads/data.txt
获取路径:/Users/admin/Downloads/data.txt
获取父目录:/Users/admin/Downloads
获取文件名称:data.txt
获取文件长度:130
获取文件最后修改时间:2021年8月16日上午11:36:39
是否可写:true
是否可读:true
是否隐藏:false
是否是文件:true
是否是文件夹:false
*/
3. 文件夹基本操作
// 1.创建文件夹
File dir = new File("/Users/admin/Downloads/aaa/bbb/ccc");
if (!dir.exists()) {
// mkdir();只能创建单级目录
boolean flag = dir.mkdirs();// 创建多级目录
System.out.println("创建结果:" + flag);
}
// 2.删除文件夹
// 2.1 直接删除(必须为空目录)
// System.out.println("删除结果:"+dir.delete());
// 2.2 使用jvm删除
dir.deleteOnExit();
// 3.获取文件夹信息
System.out.println("获取绝对路径:" + dir.getAbsolutePath());
System.out.println("获取路径:" + dir.getPath());
System.out.println("获取父目录:" + dir.getParent());
System.out.println("获取创建时间:" + new Date(dir.lastModified()).toLocaleString());
System.out.println("文件夹名称:" + dir.getName());
// 4.判断
System.out.println("是否隐藏:" + dir.isHidden());
System.out.println("是否是文件:" + dir.isFile());
// 5.遍历文件夹
File dir2 = new File("/Users/admin/Downloads");
String[] files = dir2.list();
for (String string : files) {
System.out.println(string);
}
/*
创建结果:true
获取绝对路径:/Users/admin/Downloads/aaa/bbb/ccc
获取路径:/Users/admin/Downloads/aaa/bbb/ccc
获取父目录:/Users/admin/Downloads/aaa/bbb
获取创建时间:2021年8月19日下午5:43:58
文件夹名称:ccc
是否隐藏:false
是否是文件:false
// 列出遍历的内容
*/
4. 文件过滤器
FileFilter接口:
boolean accept(File pathname)
- 当调用File类中的listFiles()方法时,支持传入FileFilter接口实现类,对获取的文件进行过滤,只有满足条件的文件才可以出现在listFiles()的返回值中。
File[] files1=dir2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith(".txt")) {
return true;
}
return false;
}
});
for (File file : files1) {
System.out.println(file.getName());
}