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 boolean isDirectory()
:此File表示的是否为目录。 -
public boolean isFile()
1.3.3 创建、删除功能的方法
-
-
public boolean delete()
:删除由此File表示的文件或目录。
delete方法,如果此File表示目录,则目录必须为空才能删除。
-
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()); } else { printDir(file); } } } }
扩展:
FilenameFilter接口也是一个文件过滤器接口,实现此接口的类实例可用于过滤文件名。
抽象方法:
boolean accept(File dir, String name)