欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

File类学习--Arsu

程序员文章站 2022-08-29 14:16:04
File1.File类的概述2.1 File类的静态成员变量2.2 绝对路径与相对路径2.3 File类的构造方法构造方法(一)构造方法(二)构造方法(三)2.4 File类获取功能的方法(一)getAbsolutePath方法(二)getPath方法(三)getName方法(四)length方法2.5 File类判断功能的方法(一)exists方法(二)isDirectory与isFile方法2.6 File类创建删除功能的方法(一)cr...

File

1.File类的概述

File类学习--Arsu

2.1 File类的静态成员变量

File类学习--Arsu

2.2 绝对路径与相对路径

File类学习--Arsu

2.3 File类的构造方法

构造方法(一)
File类学习--Arsu
构造方法(二)
File类学习--Arsu
构造方法(三)
File类学习--Arsu

2.4 File类获取功能的方法

File类学习--Arsu
(一)getAbsolutePath方法
File类学习--Arsu
(二)getPath方法
File类学习--Arsu
(三)getName方法
File类学习--Arsu
(四)length方法
File类学习--Arsu

2.5 File类判断功能的方法

File类学习--Arsu
(一)exists方法
File类学习--Arsu

(二)isDirectory与isFile方法
File类学习--Arsu

File类学习--Arsu
File类学习--Arsu

2.6 File类创建删除功能的方法

File类学习--Arsu
(一)createNewFile方法
File类学习--Arsu
File类学习--Arsu
(二)mkdir与mkdirs方法
File类学习--Arsu
File类学习--Arsu
ps(上图中File对象f4执行mkdirs方法时,不管你所写路径文件夹存不存在都会创建,返回值是true)
(三)delete方法
File类学习--Arsu

2.7 File类遍历目录(文件夹)的功能

File类学习--Arsu
(一)list方法
File类学习--Arsu
ps(该遍历能够将隐藏的文件或者文件夹也遍历出来)
(二)listFiles方法
File类学习--Arsu

3.1递归概念、分类及注意事项

File类学习--Arsu

3.2递归引发栈内存溢出原理图

File类学习--Arsu

3.3.1使用递归计算1-n之间的和代码实现(练习)

题目
File类学习--Arsu
代码

package learn.file.recurison;

/**
 * @ClassName RecurisonDemo
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 16:39
 * @Version 1.0
 **/
public class RecurisonDemo {
    public static void main(String[] args) {
        int sum = sum(100);
        System.out.println(sum);
    }

    //定义一个方法,使用递归计算1-n之间的和
    public static int sum(int n) {
        //当n=1时,结束递归
        if (n == 1) {
            return 1;
        }
        return n + sum(n - 1);
    }
}

打印结果截图
File类学习--Arsu
原理图分析
File类学习--Arsu

3.3.2使用递归计算阶乘(练习)

题目
File类学习--Arsu
代码

package learn.file.recurison;

/**
 * @ClassName RecurisonDemo2
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 16:49
 * @Version 1.0
 **/
public class RecurisonDemo2 {
    public static void main(String[] args) {
        //eg:假设计算的是5的阶乘
        int result = jc(5);
        System.out.println(result);
    }

    /**
     * 定义一个方法使用递归计算阶乘,递归结束的条件是当获取到1时,递归的目的是获得下一次被乘的数
     *
     * @param n int类型的参数
     * @return 返回使用递归计算阶乘的结果
     */
    public static int jc(int n) {
        if (n == 1)
            return 1;
        return n * jc(n - 1);
    }
}

打印结果截图
File类学习--Arsu

3.3.3使用递归打印多级目录(练习)

题目
File类学习--Arsu
前提:事先在D:\java_data\IdeaProjects(商业版)\DataStructures\目录下创建有一个abc文件夹,abc文件夹下有a文件夹(该文件夹下又包含a.jpg文件,a.txt文件),b文件夹(该文件夹下又包含b.java文件,b.txt文件),abc.java文件,abc.txt文件
代码

package learn.file.recurison;

import java.io.File;

/**
 * @ClassName RecurisonDemo3
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 17:08
 * @Version 1.0
 **/
public class RecurisonDemo3 {
    public static void main(String[] args) {
        String filePath = "D:\\java_data\\IdeaProjects(商业版)\\DataStructures\\abc";
        recurisonFiles(filePath);
    }

    /*
     * 定义一个方法传递一个路径目录字符串来对目录进行遍历
     */
    public static void recurisonFiles(String filePath) {
        System.out.println(filePath);
        File file = new File(filePath);
        File[] files = file.listFiles();
        for (File f : files) {
            //对遍历得到的file1对象进行判断,判断是否为文件夹,是的话继续递归遍历
            if (f.isDirectory()) {
                recurisonFiles(f.getAbsolutePath());
            } else {
                System.out.println(f);
            }
        }
    }
}

打印结果截图
File类学习--Arsu

3.3.4综合案例----文件搜索(练习)

题目:在3.3.3的基础上就行筛选,只要.java结尾的文件,同时将b文件夹下面的b.java改为b.JAVA,其他条件都没有改变。
代码

package learn.file.recurison;

import java.io.File;

/**
 * @ClassName RecurisonDemo4
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 17:39
 * @Version 1.0
 **/
public class RecurisonDemo4 {
    public static void main(String[] args) {
        String filePath = "D:\\java_data\\IdeaProjects(商业版)\\DataStructures\\abc";
        recurisonFiles(filePath);
    }

    /*
     * 定义一个方法传递一个路径目录字符串,对目录中的文件后缀名进行判断
     * 只要.java结尾的文件
     */
    public static void recurisonFiles(String filePath) {
        File file = new File(filePath);
        File[] files = file.listFiles();
        for (File f : files) {
            //对遍历得到的file1对象进行判断,判断是否为文件夹,是的话继续递归遍历
            if (f.isDirectory()) {
                recurisonFiles(f.getPath());
            } else {
                /*
                分析:本题要求打印得到以.java为后缀的文件,String类中有一个endsWith方法可以获得
                对象的后缀名,所以这里可以考虑把遍历得到的file文件对象转化为String对象
                 */
                //1.将file文件对象转化为String对象
                String s = f.getPath();
                //考虑到可能会出现大写字母后缀的情况,这里提前把s转化为小写
                s = s.toLowerCase();
                //2.调用String类的endsWith方法判断字符串是否以.java结尾
                boolean b = s.endsWith(".java");
                //3.若以.java结尾则输出
                if (b) {
                    System.out.println(f);
                }
            }
        }
    }
}

打印结果截图
File类学习--Arsu

4. 1FileFilter过滤器的原理

File类学习--Arsu

4. 2FileFilter过滤器的使用(练习)

通过学习FileFilter过滤器对3.3.3使用递归打印多级目录练习进行优化
File类学习--Arsu
File类学习--Arsu

定义FileFilter接口的实现类

package learn.file.recurison.fileFilter;

import java.io.File;
import java.io.FileFilter;

/**
 * @ClassName FileFilterImpl
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 18:18
 * @Version 1.0
 **/
public class FileFilterImpl implements FileFilter {
    @Override
    public boolean accept(File pathname) {
        /**
         * 定义过滤规则
         * 在accept方法中判断传入的文件的后缀名是否以.java结尾,是则返回true,否则返回false
         */
        //如果pathname是个文件夹,则返回true继续进行遍历
        if (pathname.isDirectory()) {
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".java");

    }
}

测试

package learn.file.recurison;

import learn.file.recurison.fileFilter.FileFilterImpl;

import java.io.File;

/**
 * @ClassName RecurisonDemo5
 * @Description TODO
 * @Author Administrator
 * @Date 2020/11/8 18:15
 * @Version 1.0
 **/
public class FileFilterDemo {
    public static void main(String[] args) {
        String filePath = "D:\\java_data\\IdeaProjects(商业版)\\DataStructures\\abc";
        recurisonFiles(filePath);
    }

    /*
     * 定义一个方法传递一个路径目录字符串来对目录进行遍历
     */
    public static void recurisonFiles(String filePath) {
        File file = new File(filePath);
        File[] files = file.listFiles(new FileFilterImpl());//传递过滤器对象
        for (File f : files) {
            //对遍历得到的file1对象进行判断,判断是否为文件夹,是的话继续递归遍历
            if (f.isDirectory()) {
                recurisonFiles(f.getAbsolutePath());
            } else {
                System.out.println(f);
            }
        }
    }
}

打印结果截图
File类学习--Arsu

本文地址:https://blog.csdn.net/arsu666/article/details/109559488

相关标签: java基础学习日志