File类
文件和目录路径名的抽象表示形式
静态成员变量
static String separator 名称分隔符
static String pathSeparator 路径分隔符
构造方法
public File(String pathname) pathname文件路径名
public File(String parent,String child) 父路径名 子路径名
public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象
// public File(String pathname) pathname文件路径名
File file = new File("D:\\a.txt");
System.out.println(file);//D:\a.txt
// public File(String parent,String child) 父路径名 子路径名
File file2 = new File("D:", "a.txt");
System.out.println(file2);//D:\a.txt
// public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象
File file3 = new File(new File("D:"), "a.txt");
System.out.println(file3);//D:\a.txt
文件的创建
public boolean createNewFile() 若文件不存在则创建新文件
public boolean mkdir() 创建目录
public boolean mkdirs() 创建目录及不存在的父目录
文件的删除
public boolean delete() 删除文件及空目录
文件的重命名
public boolean renameTo(File dest) 重命名为dest
//在工程目录下创建hello.txt
File f = new File("hello.txt");
System.out.println(f);
System.out.println("createNewFile:" + f.createNewFile());
//在工程目录下创建helloworld文件夹
File f2 = new File("helloworld");
System.out.println("mkdir:" + f2.mkdir());
//在工程目录下创建good/boy.txt文件夹
File f3 = new File("good");
File f4 = new File(f3, "boy.txt");
System.out.println("f3.mkdir:" + f3.mkdir());
System.out.println("createNewFile: " + f4.createNewFile());
//在工程目录下创建aaa/bbb/ccc/ddd/eee.txt
File f5 = new File("aaa/bbb/ccc/ddd");
System.out.println("mkdirs:" + f5.mkdirs());
File f6 = new File(f5, "eee.txt");
System.out.println("createNewFile:" + f6.createNewFile());
// 删除文件及空目录
File f = new File("hello.txt");
System.out.println("delete:" + f.delete());
//重命名
File f2 = new File("good/boy.txt");
File dest = new File("good/qwq.txt");
System.out.println("renameTo:" + f2.renameTo(dest));
文件的相关属性功能
public boolean isFile() 是否文件
public boolean isDirectory() 是否目录
public boolean canRead() 是否可读
public boolean canWrite() 是否可写
public boolean exists() 是否存在
public boolean isHidden() 是否隐藏
public long length() 长度
public String getAbsolutePath() 绝对路径
public String getPath() 定义的路径
public String getName() file名字
public long lastModified() 最后一次修改时间
File f = new File("aaa/bbb/ccc/ddd/qwq.txt");
System.out.println("isFile:" + f.isFile());
System.out.println("isDirectory:" + f.isDirectory());
System.out.println("canRead:" + f.canRead());
System.out.println("canWrite:" + f.canWrite());
System.out.println("exists:" + f.exists());
System.out.println("isHidden:" + f.isHidden());
System.out.println("getAbsolutePath:" + f.getAbsolutePath());
System.out.println("getPath:" + f.getPath());
System.out.println("getName:" + f.getName());
System.out.println("lastModified:" + f.lastModified());//1556610167991
Date d = new Date(1556610167991L);
SimpleDateFormat sda = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sda.format(d);
System.out.println(format);//2019-04-30 15:42:47
文件的遍历
public String[] list() 返回file下的文件和目录名称(字符串)
public File[] listFiles() 返回file下的文件和目录(文件)
public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称
public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录
File f = new File("aaa/bbb/ccc/ddd");
String[] list = f.list();
for (String lists : list) {
System.out.println(lists);
}
File[] listFiles = f.listFiles();
for (File file : listFiles) {
System.out.println(file);
}
//public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称
File f2 = new File("aaa/bbb/ccc/ddd");
String[] list2 = f2.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File f = new File(dir, name);
String name2 = f.getName();
return name2.endsWith(".java") && f.isFile();//过滤掉非java文件
}
});
for (String name2 : list2) {
System.out.println(name2);
}
//public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录
File f = new File("aaa/bbb/ccc/ddd");
File[] files = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathName) {
return pathName.getName().endsWith(".java") && pathName.isFile();//过滤掉非java文件
}
});
for (File file : files) {
System.out.println(file);
}
利用递归查询mp4文件
public static int num = 0; //定义变量统计文件个数
public static void main(String[] args) {
System.out.println(getAllJavaFile(new File("C:\\")));//查询目标:C盘
}
public static int getAllJavaFile(File srcFile) {
if (srcFile == null) {
throw new NullPointerException("文件对象不能为null");
}
//获取该文件夹下所有的文件和文件夹
File[] listFiles = srcFile.listFiles();
//获取到每一个文件和文件夹
if (listFiles != null && listFiles.length != 0) {
for (File file : listFiles) {
//判断该对象是文件还是文件夹
if (file.isDirectory()) {
getAllJavaFile(file);//使用递归
} else {
//判断是否是mp4文件
if (file.getName().endsWith(".mp4")) {
num++;
System.out.println(file.getName());
}
}
}
}
return num;
}
}