file类、递归

1. file类

java.io.file类文件和目录路径名的抽象表示形式。
java把电脑中的文件和文件夹(目录)封装成为了一个file类,我们可以使用file类的文件和文件夹进行操作。

file--文件  directory--文件夹/目录   path--路径

file类中的常用方法

File类获取功能的方法

- public String getAbsolutePath() :返回此File的绝对路径名字符串。
- public String getPath() :将此File转换为路径名字符串。
- public String getName()  :返回由此File表示的文件或目录的名称。
- public long length()  :返回由此File表示的文件的大小。
File f1 = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\a.txt");
String name1 = f1.getName();
System.out.println(name1);//a.txt

File f2 = new File("C:\\develop\\a\\2.jpg");
System.out.println(f2.length());//0

file类判断功能的方法

exists 用于判断构造方法中的路径是否存在。
isdirectory 是否为目录。
isFile() 是否为文件

 File f1 = new File("E:\\test");
      if(f1.exists()){
          System.out.println(f1.isDirectory());
          System.out.println(f1.isFile());
      }

file类遍历目录功能

public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

File file = new File("E:\\test");
File[] files = file.listFiles();
for (File f : files) {
    System.out.println(f);
}

2. 递归

递归:方法自己调用自己。
注意事项:有条件限定,保证递归能停止下来。而且递归次数不能太多。
使用前提:需要调用方法,方法的主体不变,每次传入的参数不同时,可以使用递归。

resource 看图
方法在栈内存中

3. 练习:使用递归计算1-n之间的和。

定义一个方法,使用递归计算1-n之间的和
1+2+3+...+n
n+(n-1)+(n-2)+...+1
已知:
最大值:n
最小值:1
使用递归必须明确:
1.递归的结束条件
获取到1的时候结束
2.递归的目的
获取下一个被加的数字(n-1)
原理图

非常重要 ,在递归中,一直要入栈到最后一级,然后再逐级往栈底弹栈。

public static int sum(int n){
        //获取到1的时候结束
        if(n==1){
            return 1;
        }
        return n + sum(n-1);
    }

4. 练习:使用递归计算阶乘

原理几乎和上一题一模一样,可以不练。

5. 练习:递归打印文件夹目录

要求:给出一个地址,要打印这个目录下的所有文件及文件夹。尤其是碰到文件夹的情况,需要进入文件夹,继续往下读。

  public static void main(String[] args) {
        File file = new File("E:\\网络下载\\Office Tool\\files\\clean");
        getAllFile(file);
    }
    /*     定义一个方法,参数传递File类型的目录
        方法中对目录进行遍历 */
    public static void getAllFile(File dir){
        System.out.println(dir);//打印被遍历的目录名称
        File[] files = dir.listFiles();
        for (File f : files) {
            //对遍历得到的File对象f进行判断,判断是否是文件夹
            if(f.isDirectory()){
                getAllFile(f);
            }else{
                //f是一个文件,直接打印即可
                System.out.println(f);
            }
        }
    }
posted @ 2021-04-17 22:05  党参  阅读(79)  评论(0)    收藏  举报
页脚HTML代码