JavaSE学习笔记

  • 主要用于文件和目录的创建、删除和查询等操作,Java 把电脑中的文件封装成了 File 类,在编写代码的时候我们可以使用 File 类来对文件或者文件夹进行操作。

分隔符

public class Main {
    public static void main(String[] args) {
        //路径分隔符,在window中,分割两个路径使用 ";"
        //在linux中分割两个路径使用 ":"
        String pathSeparator = File.pathSeparator;
        System.out.println(pathSeparator); // ;

        //文件名称分隔符,在window中文件名称使用 "" 来分隔
        //在linux中使用 "/" 来分隔文件名称
        String separator = File.separator;
        System.out.println(separator);// 
    }
}

构造方法

public class Main {
    public static void main(String[] args) {
        File file = new File("C:\Users\17388\Desktop\1.txt");
        System.out.println(file); //C:Users17388Desktop1.txt
        String parent = "C:\Users\17388\Desktop";
        String child = "1.txt";
        File file1 = new File(parent, child);
        System.out.println(file1);
    }
}

常用方法

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("1.txt");
        System.out.println(file); //1.txt,toString内部调用了getPath
        //获取文件绝对路径
        System.out.println(file.getAbsolutePath());//D:ComputerProjectjava1.txt
        //获取创建时的路径
        System.out.println(file.getPath());//1.txt
        //获取文件名
        System.out.println(file.getName());//1.txt
        //获取文件的字节数,如果不是文件或者文件不存在返回0
        System.out.println(file.length());
        //判断文件是否存在
        System.out.println(file.exists());//false
        //判断是否是文件,路径不存在返回false
        System.out.println(file.isFile());//false
        //判断当前路径是否是目录,路径不存在返回false
        System.out.println(file.isDirectory());//false

        //文件不存在则创建文件,否则不创建,只能创建文件
        boolean flag = file.createNewFile();
        System.out.println(flag);//true
        if (file.exists()) {
            System.out.println(file.isFile());//true
            System.out.println(file.isDirectory());//false
        }

        File file1 = new File("1");
        //创建单级目录
        boolean flag1 = file1.mkdir();
        System.out.println(flag1);//true

        File file2 = new File("11\111");
        //创建多级目录
        boolean flag2 = file2.mkdirs();
        System.out.println(flag2);//true

        //删除文件或者目录
        System.out.println(file.delete());
        System.out.println(file1.delete());
        System.out.println(file2.delete());
    }
}

遍历目录

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\Computer\Project\java");
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }

        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
        }

    }
}

递归读取目录及其子目录文件

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\Computer\Project\java");
        printAllFile(file);
    }

    private static void printAllFile(File file) {
        System.out.println(file);
        File[] files = file.listFiles();
        for (File file1 : files) {
            if(file1.isFile()) {
                System.out.println(file1);
            } else {
                printAllFile(file1);
            }
        }
    }
}

递归查找指定条件文件

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\Computer\Project\java");
        printAllFile(file);
    }

    private static void printAllFile(File file) {
        //System.out.println(file);
        File[] files = file.listFiles();
        for (File file1 : files) {
            if(file1.isFile()) {
                if(file1.getName().toLowerCase().endsWith(".iml")) {
                    System.out.println(file1);
                }
            } else {
                printAllFile(file1);
            }
        }
    }
}

文件过滤器

  • 使用 FileFilter 过滤器接口,在遍历目录的同时,调用其中的 accept 方法将其中不符合要求的文件过滤掉,然后在进行判断输入即可。(面向接口编程)
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\Computer\Project\java");
        printAllFile(file);
    }

    private static void printAllFile(File file) {
        //我们在遍历目录的同时,调用了过滤器中的方法,将不符合要求的文件过滤掉
//        File[] files = file.listFiles(new FileFilter() {
//            @Override
//            public boolean accept(File pathname) {
//                if (pathname.isDirectory()) {
//                    return true;
//                } else {
//                    return pathname.getName().toLowerCase().endsWith(".iml");
//                }
//            }
//        });
//        for (File file1 : files) {
//            if(file1.isDirectory()) {
//                printAllFile(file1);
//            } else {
//                System.out.println(file1);
//            }
//        }

        File[] files1 = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return new File(dir, name).isDirectory() ||
                        name.toLowerCase().endsWith(".java");
            }
        });
        for (File file1 : files1) {
            if (file1.isDirectory()) {
                printAllFile(file1);
            } else {
                System.out.println(file1);
            }
        }

    }
}
原文地址:https://www.cnblogs.com/zut-syp/p/13570766.html