创建File对象
File(String pathname) //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
常用方法及其测试
File file = new File("F:\\ioTest\\1.txt"); // 本地磁盘路径 // 常见方法 System.out.println( file.length() ); // 获取文件的字节量 System.out.println( file.exists() ); // 判断文件是否存在 System.out.println( file.isFile() ); // 判断资源是否存在 System.out.println( file.isDirectory() ); // 判断资源是否是文件夹 System.out.println( file.getName() ); // 获取文件名 System.out.println( file.getParent() ); // 获取父目录 System.out.println( file.getAbsolutePath() ); // 获取 当前文件的绝对路径(全路径) System.out.println(); file = new File("F:\\ioTest\\2.txt"); // 没有了创建返回true,有了不创建返回false System.out.println( file.createNewFile() ); // 判断有没有新建成功 file = new File("F:\\ioTest\\x\\y\\z"); System.out.println( file.mkdirs() ); // 创建不存在的多级目录 file = new File("F:\\ioTest\\xy"); System.out.println( file.mkdir() ); // 创建一级不存在的目录 System.out.println( file.delete() ); // 删除文件 或者 空白的文件夹 // file = new File("F:\\ioTest\\a"); String[] str2 = file.list() ; // 列出文件夹下面所有的资源 // [1.png, 1.txt, 2.txt],数组里放的是文件名称 System.out.println(Arrays.toString(str2)); // File[] listFiles() // 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 File[] files = file.listFiles(); System.out.println(Arrays.toString(files)); // System.out.println( file.listFiles() );
常用方法应用
递归求目录总大小
所谓递归,就是自己调用自己的一种方式。
import java.io.File; import java.util.Scanner; // 该类 测试 递归求目录总大小 public class Test3_Size { public static void main(String[] args) { // 1.接收用户输入的目录 String path = new Scanner(System.in).nextLine(); File dir = new File(path); // 2.调用size()总大小 long sum = size(dir); System.out.println("文件总大小:"+sum); // 370257 单位:字节 } private static long size(File dir) { long sum = 0; // 1.列出所有文件夹下面的所有资源 File[] fs = dir.listFiles(); // 1.1 我们需要获取每个File对象,就需要遍历fs数组 for (int i = 0; i < fs.length; i++) { // 2.如果是文件,把文件的字节量累加 length() File file = fs[i]; if(file.isFile()) { sum += file.length(); }else if(file.isDirectory()) { //3.如果是文件夹,则继续遍历文件夹里的文件,进行判断,即继续递归 sum += size(file); } } // 返回文件总大小 return sum; } }
经过上述的是,我的指定路径的字节总数是:370257B,可以通过该文件夹右键 -> 属性,查看到的字节数和程序运行结果一致。
递归删除文件夹
代码演示:
import java.io.File; import java.util.Scanner; public class Test4_Delete { public static void main(String[] args) { // 接收用户输入的路径 String path = new Scanner(System.in).nextLine(); // 创建File对象 File dir = new File(path); delete(dir); System.out.println("删除成功!!!"); } /* * dir可以是文件路径,也可以是文件夹路径 */ private static void delete2(File dir) { // TODO Auto-generated method stub if(!dir.exists()) { //如果路径不存在,直接返回 return; } // 1.判断是否是文件,是的话直接删除 if(dir.isFile()) { dir.delete(); // 删除文件 } else if(dir.isDirectory()) { // 2.判断是否是目录 for(File f : dir.listFiles()) { // 2.1 遍历目录下的所有的资源(文件和文件夹) delete(f); // 进入目录,重新检查,递归调用 } delete(dir); // 删除外层文件夹 } } }
来源:https://www.cnblogs.com/love-programming/p/12410796.html