java.io.File类常用的方法

目录

目标

方法集锦

获取文件的绝对路径

获取文件和文件夹名称

获取文件所在目录

创建文件

创建文件夹

删除文件或文件夹

判断文件或文件夹是否存在

判断是否是文件夹

判断是否是文件

判断是否是隐藏文件

查询文件和文件夹最后修改的时间

查询文件内容的字节数量

获取当前目录下所有文件名称和文件夹名称

获取当前目录下所有文件和文件夹的全路径

筛选出当前目录下所有符合过滤器的文件

获取当前目录及所有子目录下的所有文件

获取当前目录及所有子目录下的所有文件夹

获取目录下所有的叶子目录

获取目录下所有的空叶子目录

获取目录下所有的非空叶子目录


目标

了解java.io.File类常用的方法。


方法集锦

使用到的常量

    //文件
    public static final String MY_FILE = "C:\\Users\\huangshang\\Desktop\\demo\\es.txt";
    //文件2
    public static final String MY_FILE_TWO = "C:\\Users\\huangshang\\Desktop\\demo\\logs\\es.txt";
    //文件夹
    public static final String MY_DIR = "C:\\Users\\huangshang\\Desktop\\demo";
    //文件夹2
    public static final String MY_DIR_TWO = "C:\\Users\\huangshang\\Desktop\\demo\\config";

获取文件的绝对路径

    public void getAbsoluteFilePath() throws IOException {
        File file = new File(MY_FILE);
        //返回File类型
        File absoluteFile = file.getAbsoluteFile();
        System.out.println(absoluteFile);
        //返回String类型
        String absolutePath = file.getAbsolutePath();
        System.out.println(absolutePath);
    }

获取文件和文件夹名称

    public void getFileName() {
        File file = new File(MY_FILE);
        String name = file.getName();
        System.out.println(name);
    }

获取文件所在目录

    public void getParentFile()  {
        File file = new File(MY_FILE_TWO);
        //返回String类型
        String name = file.getParent();
        System.out.println(name);
        //返回File类型
        File parentFile = file.getParentFile();
        System.out.println(parentFile);
    }

创建文件

    public void createFile() throws IOException {
        File file = new File(MY_FILE);
        file.createNewFile();
        File absoluteFile = file.getAbsoluteFile();
        System.out.println(absoluteFile);
    }

创建文件夹

    public void createDir(){
        File file = new File(MY_DIR_TWO);
        file.mkdir();
        File absoluteFile = file.getAbsoluteFile();
        System.out.println(absoluteFile);
    }

删除文件或文件夹

    public void deleteFile() {
        File file = new File(MY_DIR_TWO);
        file.delete();
    }

判断文件或文件夹是否存在

    public void isExist(){
        File myFile = new File(MY_FILE);
        File myDir = new File(MY_DIR);
        System.out.println(myFile.exists());
        System.out.println(myDir.exists());
    }

判断是否是文件夹

    public void isDir(){
        File myFile = new File(MY_FILE);
        File myDir = new File(MY_DIR);
        System.out.println(myDir.isDirectory());
        System.out.println(myFile.isDirectory());
    }

判断是否是文件

    public void isDir(){
        File myFile = new File(MY_FILE);
        File myDir = new File(MY_DIR);
        System.out.println(myFile.isFile());
        System.out.println(myDir.isFile());
    }

判断是否是隐藏文件

    public void isHidden(){
        File myFile = new File(MY_FILE);
        File myDir = new File(MY_DIR);
        System.out.println(myFile.isHidden());
        System.out.println(myDir.isHidden());
    }

查询文件和文件夹最后修改的时间

    public void lastModified(){
        File myFile = new File(MY_FILE);
        File myDir = new File(MY_DIR);
        System.out.println(getFormatDate(myFile.lastModified()));
        System.out.println(getFormatDate(myDir.lastModified()));
    }

    public String getFormatDate(long time){
        Date date = new Date(time);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(date);
        return dateString;
    }

查询文件内容的字节数量

    public void fileSize(){
        File myFile = new File(MY_FILE);
        System.out.println(myFile.length());
    }

获取当前目录下所有文件名称和文件夹名称

    public void fileNameArr(){
        File dir = new File(MY_DIR);
        String[] arr = dir.list();
        for (String s : arr) {
            System.out.println(s);
        }
    }

获取当前目录下所有文件和文件夹的全路径

    public void fileAbsolutePathArr(){
        File dir = new File(MY_DIR);
        File[] files = dir.listFiles();
        for (File s : files) {
            System.out.println(s.getAbsolutePath());
        }
    }

筛选出当前目录下所有符合过滤器的文件

    public void filefilter(){
        File dir = new File(MY_DIR);
        String[] arr = dir.list(new FilenameFilter() {
            /**
             *
             * @param dir 文件所在的目录。
             * @param name 文件的名称。
             * @return
             */
            @Override
            public boolean accept(File dir, String name) {
                //筛选出txt格式的文件
                if(name.endsWith(".txt")){
                    System.out.println("文件过滤器筛选出符合条件的文件:"+dir+"\\"+name);
                    return true;
                }
                return false;
            }
        });
        for (String s : arr) {
            System.out.println(s);
        }
    }

获取当前目录及所有子目录下的所有文件

    public List getAllFilesByDir(List<File> list, File file){
        if(file.isFile()){
            list.add(file);
        }else{
            File[] files = file.listFiles();
            if(files !=null&& files.length>0){
                for (File f : files) {
                    getAllFilesByDir(list,f);
                }
            }
        }
        return list;
    }

获取当前目录及所有子目录下的所有文件夹

    public List getAllDirs(List<File> list, File file){
        if(file.isDirectory()){
            list.add(file);
            File[] files = file.listFiles();
            if(files !=null&& files.length>0){
                for (File f : files) {
                    getAllDirs(list,f);
                }
            }
        }else{
            return new ArrayList();
        }
        return list;
    }

获取目录下所有的叶子目录

    public List getAllEndDirs(List<File> list, File file){
        if(file.isDirectory()){
            File[] files = file.listFiles();
            if(files ==null ||  files.length==0){
                list.add(file);
            }else{
                boolean boo=true;
                for (int i=0;i<files.length;i++) {
                    if(files[i].isDirectory()){
                        break;
                    }else if(i==files.length-1){//遍历该目录,发现都是文件,而没有文件夹。
                        boo=false;
                        list.add(file);
                    }
                }
                if(boo){
                    for (File f : files) {
                        if(f.isDirectory()){
                            getAllEndDirs(list,f);
                        }
                    }
                }
            }
        }else{
            return new ArrayList();
        }
        return list;
    }

获取目录下所有的空叶子目录

    public List getAllIsNullEndDirs(List<File> list, File file){
        if(file.isDirectory()){
            File[] files = file.listFiles();
            if(files !=null && files.length>0){
                for (File f : files) {
                    if(f.isDirectory()){
                        getAllIsNullEndDirs(list,f);
                    }
                }
            }else{
                list.add(file);
            }
        }else{
            return new ArrayList();
        }
        return list;
    }

获取目录下所有的非空叶子目录

    public List getAllIsNotNullEndDirs(List<File> list, File file){
        if(file.isDirectory()){
            File[] files = file.listFiles();
            if(files !=null &&  files.length>0){
                boolean boo=true;
                for (int i=0;i<files.length;i++) {
                    if(files[i].isDirectory()){
                        break;
                    }else if(i==files.length-1){//遍历该目录,发现都是文件,而没有文件夹。
                        boo=false;
                        list.add(file);
                    }
                }
                if(boo){
                    for (File f : files) {
                        if(f.isDirectory()){
                            getAllIsNotNullEndDirs(list,f);
                        }
                    }
                }
            }
        }else{
            return new ArrayList();
        }
        return list;
    }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值