File对象可以操作文件与目录,创建File对象并不一定是创建了新的文件或目录,而是表示某文件或目录。
File file = new File("data.txt"); 以当前目录下data.txt文件,创建一个File对象。但当前目录下并不一定存在data.txt文件。
System.out.println(file.exists()); 输出结果为false,当前目录下不存在data.txt文件。
File的createNewFile()函数可以创建data.txt文件
file.createNewFile();
System.out.println(file.exists()); 输出结果为true
File类的示例如下:
import java.io.*; public class FileTest { public static void main(String[] args) throws IOException{ // 以当前目录创建一个File对象,file表示当前目录 File file = new File("."); // 输出file表示的文件或目录名 System.out.println(file.getName()); // . // 判断file表示的是否为文件 System.out.println(file.isFile()); // false // 判断file表示的是否为目录 System.out.println(file.isDirectory()); // true // file表示的文件或目录的绝对路径 System.out.println(file.getAbsoluteFile()); // D:java. // 判断file表示的文件或目录是否存在 System.out.println(file.exists()); // true // 返回file表示的目录下的所有文件或目录 String[] list = file.list(); for (String str:list) { System.out.println(str); } } }
File的list()方法可以接收一个FilenameFilter类参数,通过该参数可以得到只符合条件的文件或目录。
FilenameFilter是一个接口,通过实现其包含的accept(File dir, String name)方法,来筛选指定目录下符合条件的文件或目录。
accept(File dir, String name) dir表示指定目录,name表示指定目录下的文件名或目录名,通过对name的操作来筛选指定目录下符合条件的文件或目录。
例1.如得到file表示目录下的.java文件,代码如下:
import java.io.*; public class FileTest { public static void main(String[] args) throws IOException{ // 以当前目录创建一个File对象,file表示当前目录 File file = new File("."); String[] list = file.list(new MyFilter()); for (String str:list) { System.out.println(str); } } } class MyFilter implements FilenameFilter { // 实现accept方法,若name以.java结尾返回true public boolean accept(File dir, String name) { return name.endsWith(".java"); } }
也可以使用匿名类来实现
import java.io.*; public class FileTest { public static void main(String[] args) throws IOException{ // 以当前目录创建一个File对象,file表示当前目录 File file = new File("."); String[] list = file.list(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".java"); } } ); for (String str:list) { System.out.println(str); } } }
也可以使用Lambda表达式来实现
String[] list = file.list((dir, name) -> name.endsWith(".java"));
例2. 得到file表示目录下的.java文件及目录
import java.io.*; public class FileTest { public static void main(String[] args) throws IOException{ // 以当前目录创建一个File对象,file表示当前目录 File file = new File("."); String[] list = file.list(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".java") || new File(name).isDirectory(); } } ); for (String str:list) { System.out.println(str); } } }