File
java.io.File: 是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。(文件和文件夹)
File类的静态成员变量:
static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static char pathSeparatorChar 与系统相关的路径分隔符。
static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static char separatorChar 与系统相关的默认名称分隔符。
System.out.println(File.separator);// 文件名称分隔符 windows:反斜杠 \ linux:正斜杠 / System.out.println(File.pathSeparator);// 路径分隔符 windows:分号 ; linux:冒号 :
注意:
- 路径是不区分大小写
- 路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠 \\
File的构造方法:
public File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。不管传入的pathName是否存在都能创建成功。
public File(File parent,String child)从父抽象路径名和子路径名字符串创建新的File实例。
public File(String parent,String child)从父路径名字符串和子路径名字符串创建新的File实例。
public static void main(String[] args) { //方式1: File file = new File("C:\\0_Joyce\\Eclipse"); System.out.println(file);//C:\0_Joyce\Eclipse //方式2: File file1 = new File("C:\\0_Joyce\\Eclipse","a.txt"); System.out.println(file1);//C:\0_Joyce\Eclipse\a.txt //方式3: File file2 = new File(file,"b.txt"); System.out.println(file2); }
File类的获取功能的方法:
public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
public String getPath() 将此抽象路径名转换为路径名字符串 File类中的toString()方法就是调用的getPath()方法。
public String getName()返回由此抽象路径名表示的文件或目录的名称
public long length()返回由此抽象路径名表示的文件的长度。如果是文件夹或者是不存在的文件,则返回0,得到的是字节数;
File类的判断功能方法:
public boolean exists()测试此抽象路径名表示的文件或目录是否存在。
public boolean isDirectory()测试此抽象路径名表示的文件是否为目录
public boolean isFile()测试此抽象路径名表示的文件是否为普通文件。
File类中创建删除功能方法:
public boolean createNewFile() throws IOException当且仅当具有该名称的文件尚不存在时

public boolean delete()删除由此抽象路径名表示的文件或目录。 如果此路径名表示目录,则目录必须为空才能删除。
public boolean mkdir()创建由此抽象路径名命名的目录。
public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。


File类遍历文件夹(目录)的功能:
public String[] list()返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。返回当前路径下的所有的文件夹和文件
递归找到指定目录下的所有的文件和文件夹:
public static void main(String[] args) { File file = new File("C:\\0_Joyce\\Eclipse\\Test"); getFile(file); } public static void getFile(File file) { System.out.println(file.getPath()); //获取到目录下的所有的文件或者文件夹 File[] files = file.listFiles(); for(File value:files) { //如果还是一个文件夹,继续遍历 if(value.isDirectory()) { getFile(value); }else { if(value.getName().toLowerCase().endsWith(".java")) { System.out.println(value.getName()); } } } }
public File[] listFiles(FileFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。 该方法的行为与listFiles()方法的行为相同,但返回的数组中的路径名必须满足过滤器。 如果给定的filter是null那么所有的路径名都被接受。 否则,当且仅当值true在路径名上调用过滤器的FileFilter.accept(File)方法时,路径名满足过滤器。
FileFilter 也是一个函数式接口,里面有一个方法叫做accept:
boolean accept(File pathname)
测试指定的抽象路径名是否应包含在路径名列表中。
FileFilter的使用原理:


使用FileFilter接口:
public static void main(String[] args) { File file = new File("C:\\0_Joyce\\Eclipse\\Test"); getFile(file); } public static void getFile(File file) { //方式一:内部匿名类 // File[] files = file.listFiles(new FileFilter() { // @Override // public boolean accept(File pathname) { // return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java"); // } // }); //方式二:Lambda 表达式 // File[] files = file.listFiles((File pathname)->{ // return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java"); // }); //方式三: 简便的Lambda表达式 File[] files = file.listFiles(pathname->pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java")); for(File value:files) { if(value.isDirectory()) { getFile(value); }else { if(value.getName().toLowerCase().endsWith(".java")) { System.out.println(value.getName()); } } } }
使用FilenameFilter接口:
public static void main(String[] args) { File file = new File("C:\\0_Joyce\\Eclipse\\Test"); getFile(file); } public static void getFile(File file) { //方式一:内部匿名类 // File[] files = file.listFiles(new FilenameFilter() { // @Override // public boolean accept(File dir, String name) { // return new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java"); // } // }); //方式二:Lambda表达式 File[] files = file.listFiles((File dir, String name)->{ return new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java"); }); //方式三:简约的Lambda 表达式 //File[] files = file.listFiles((dir,name)-> new File(dir,name).isDirectory()||name.toLowerCase().endsWith(".java")); for(File value:files) { if(value.isDirectory()) { getFile(value); }else { if(value.getName().toLowerCase().endsWith(".java")) { System.out.println(value.getName()); } } } }

浙公网安备 33010602011771号