java进阶知识--File类
1.1 概述
// 文件路径名 String pathname = "D:\\aaa.txt"; File file1 = new File(pathname); // 文件路径名 String pathname2 = "D:\\aaa\\bbb.txt"; File file2 = new File(pathname2);
-
public File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例。
// 通过父路径和子路径字符串 String parent = "d:\\aaa"; String child = "bbb.txt"; File file3 = new File(parent, child);
-
public File(File parent, String child):从父抽象路径名和子路径名字符串
// 通过父级File对象和子路径字符串
File parentDir = new File("d:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child);
一个File对象代表硬盘中实际存在的一个文件或者目录。
1.3 常用方法
1.3.1 获取功能的方法
-
-
public String getPath():将此File转换为路径名字符串。 (构造路径) -
public String getName():返回由此File表示的文件或目录的名称。 -
public long length() -
public long lastModified()
-
-
public boolean isDirectory():此File表示的是否为目录。 -
public boolean isFile()
1.3.3 创建、删除功能的方法
-
-
public boolean delete():删除由此File表示的文件或目录。
delete方法,如果此File表示目录,则目录必须为空才能删除。
-
public void deleteOnExit():在程序退出时,删除指定文件。 -
public boolean mkdir():创建由此File表示的目录。 -
public boolean mkdirs()
1.4 目录的遍历
-
public String[] list():返回一个String数组,表示该File目录中的所有(一级)子文件或目录的名称。
-
public File[] listFiles():返回一个File数组,表示该File目录中的所有(一级)子文件或目录的对象。
1.5 File中的四个关键静态方法
- static String pathSeparator(); //与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
- static Char pathSeparatorChar(); //与系统有关的路径分隔符。
- static String separator(); //与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
- static Char separatorChar(); //与系统有关的默认名称分隔符。
小贴士:
路径分隔符 windows:分号; linux:冒号:
名称分隔符 windows:反斜杠 \ linux:正斜杠 /
1.6 使用文件过滤器实现文件搜索
1.6.1 文件过滤器FileFilter
1.6.2 案例分析
-
-
accept方法,参数为File,表示当前File下所有的子文件和子目录。保留住则返回true,过滤掉则返回false。保留规则:a. 要么是.java文件。
b. 要么是目录,用于继续遍历。
-
通过过滤器的作用,
listFiles(FileFilter)
-
public class DiGuiQueryDemo {
public static void main(String[] args) {
File dir = new File("D:\\job");
printDir(dir);
}
public static void printDir(File dir) {
// 匿名内部类方式,创建过滤器子类对象
/*File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java")||pathname.isDirectory();
}
});*/
// lambda的书写方式,创建过滤器子类对象
File[] files = dir.listFiles(f -> {
return f.getName().endsWith(".java") || f.isDirectory();
});
// 循环打印
for (File file : files) {
if (file.isFile()) {
System.out.println("文件名:" + file.getAbsolutePath());
// 启动.exe文件
/*try {
Runtime runtime = Runtime.getRuntime();
runtime.exec(file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}*/
} else {
printDir(file);
}
}
}
}
扩展:
FilenameFilter接口也是一个文件过滤器接口,实现此接口的类实例可用于过滤文件名。
抽象方法:
boolean accept(File dir, String name)


浙公网安备 33010602011771号