File类代表物理盘符中的一个文件或文件夹
其不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性
import java.io.File; import java.io.IOException; import java.util.Arrays; public class Hello{ public static void main(String[] args) throws IOException { //创建文件时必须抛出异常 //File.pathSeparator生成路径分隔符; System.out.println("路径分隔符" + File.pathSeparator); //File.separator生成名称分隔符\ System.out.println("名称分隔符" + File.separator); //先创建File类的对象,才能对文件进行操作 File f1 = new File("1.txt"); File f2 = new File("1"); File f3 = new File("."); //exists()方法判断文件或目录是否存在 //createNewFile()方法创建文件,返回true if (! f1.exists()) { System.out.println(f1.createNewFile()); } //mkdir()方法创建目录,返回true(mkdirs()方法可以创建多级目录) System.out.println(f2.mkdir()); //isDirectory()方法判断是否是目录 System.out.println(f2.isDirectory()); //delete()方法删除文件或目录,返回true(只能删除空目录,多级目录只能删除最里层那个) System.out.println(f2.delete()); //isFile()方法判断是否是文件 System.out.println(f1.isFile()); //getName()方法获取文件名 System.out.println(f1.getName()); //getPath()方法获取文件相对路径 System.out.println(f1.getPath()); //getAbsolutePath()方法获取文件绝对路径 System.out.println(f1.getAbsolutePath()); //length()方法获取文件大小 System.out.println(f1.length()); //canWrite()方法判断文件是否可写 System.out.println(f1.canWrite()); //list()方法返回当前路径下所有文件和文件夹的名称,保存为数组 System.out.println(Arrays.toString(f3.list())); } }
当调用File类中的listFiles()方法时,支持传入FileFilter接口实现类的对象作为参数,对获取的文件进行过滤
import java.io.File; import java.io.FileFilter; public class Hello{ public static void main(String[] args) { File f2 = new File("1"); System.out.println(f2.mkdir()); //FileFilter实现类可以自定义选择文件的条件 File[] files = f2.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.getName().endsWith(".jpg")) { return true; } return false; } }); for (File f : files){ System.out.println(f.getName()); } } }
练习:递归打印文件夹所有文件路径,和删除所有文件
import java.io.File; public class Hello{ public static void main(String[] args) { File file = new File("d:\\JAVA"); test(file); } //要递归打印和删除,因此要创建一个方法来调用 public static void test(File file){ File[] list = file.listFiles(); if (list != null){ for (File fi : list) { if (fi.isDirectory()){ //采用递归判断子文件是否为目录 test(fi); } else { System.out.println(fi.getName()); System.out.println(fi.delete()); } } } //先把所有文件删除以后,才能删除目录 System.out.println(file.delete()); } }