JAVA之File类学习

介绍
不管是什么编程语言,对文件操作的需求都是必须的,在Java中,提供了一个专门操作文件的类File类。这个类可以实现很多对文件的操作,比如创建一个文件,删除或者重命名某个文件,判断硬盘上某个文件是否存在,查询文件最后修改时间等。

File类
File类封装一个路径,这个路径可以是从系统盘开始的绝对路径(如:D:\file\a.txt),也可以是相对于当前目录而言的相对路径(如:src\a.txt)。File类内部封装的路径可以指向一个文件,也可以指向一个目录。

File类的构造方法:
这里写图片描述

Flie类的常用方法:
这里写图片描述

Demo
下面是几个File类的基本操作实现:
1.遍历目录下的所有文件,分为二种情况,这个目录下不包括子目录,则直接遍历:

public static void TraverseFile(){
        File file = new File("src\\Zhuanti");
        if(file.isDirectory()){
            String[] names = file.list();
            for (String name: names)
                System.out.println(name);
        }
    }

若只遍历以.java结尾的文件:

 public static void TraverseFiterFile(){
        File file = new File("src\\Zhuanti");
        FilenameFilter filenameFilter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File currFile =  new File(dir,name);
                if (currFile.isFile() && name.endsWith(".java"))
                    return true;
                else
                    return false;
            }
        };

        if(file.exists())
        {
            String[] lists = file.list(filenameFilter);
            for (String name: lists)
                System.out.println(name);
        }
    }

若目录下还有子目录,则要使用递归的思想来遍历:

 File file = new File("src");
 FileOperation.TraverseDir(file);

 public static void TraverseDir(File dir){
        File[] files = dir.listFiles();
        for (File file : files)
        {
            if (file.isDirectory())
                TraverseDir(file);
            System.out.println(file.getPath());
        }
    }

2.删除文件以及目录:若要删除的目录下包含子目录或者文件,File类的delete()方法是不允许直接删除的,这个时候可以使用下面方法递归删除。

    File file = new File("src");
    FileOperation.TraverseDir(file);

    public static void deleteDir(File dir){
        if (dir.exists())
        {
            File[] files = dir.listFiles();
            for (File file: files)//遍历所有子目录和文件
            {
                if (file.isDirectory())
                    deleteDir(file); //如果是目录。递归调用
                else
                    file.delete(); //如果是文件,直接删除
            }
            //删除完一个目录里所有文件后,就删除这个目录
            dir.delete();
        }
    }

猜你喜欢

转载自blog.csdn.net/m0_37306360/article/details/79426094