美文网首页Java
复习JavaSE 11.File 递归

复习JavaSE 11.File 递归

作者: 第二套广播体操 | 来源:发表于2019-03-10 20:22 被阅读0次

File构造方法

  • File(File parent, String child)
  • 从父抽象路径名和子路径名字符串创建新的 File实例。
  • File(String pathname)
  • 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • File(String parent, String child)
    绝对路径 路径的全称
    相对路径 省略根文件(项目文件)以前的路径
 File file = new File("D:\\IO\\IO1.txt");
        if (!file.exists())file.mkdir();

会产生一个名字叫IO1.txt的文件夹

public class FileMethod {

    public static void main(String[] args) throws IOException {
//        fileDemo1();
        fileDemo2();
    }

    private static void fileDemo2() throws IOException {
        File file = new File("D:\\IO\\IO1.txt");
        if (!file.exists())file.mkdir();

        File file1 = new File(file,"DEMO2.txt");
        if (!file1.exists())file1.createNewFile();

    }

    private static void fileDemo1() {
        File file = new File("D:\\IO\\DEMO1.txt");
        System.out.println(file.getAbsolutePath());
        File file1=new File("D:\\IO");
        File file2 = new File(file1,"DEMO1.txt");
    }
}

递归消耗资源
*迭代一定要有条件限定,保证递归可以停止下来 否则会发生栈内存溢出
*递归虽然有限定 但是递归次数不能太多 否则也会造成栈内存过多
*构造方法不能使用递归
计算1到n的和 不推荐使用递归 应该使用for循环

public class DiguiDemo1 {
    public static void main(String[] args) {

        int i=1;
        int n=4;
        int add = add(i, n);
        System.out.println(add);
    }

    private static int add(int i,int n) {
       if (i<n) {
          i+=add(++i,n);
       }
       return i;
    }
}

阶乘

public class DiguiDemo2 {
    public static void main(String[] args) {
        int n = 5;
        int i = jieCheng(n);
        System.out.println(i);
    }

    private static int jieCheng(int n) {
        if (n==1)
            return 1;
        return n*jieCheng(n-1);
    }
}

遍历文件夹

public class FileName {
    public static void main(String[] args) {
        File file = new File("D:\\QQBrowser");
       FileNameDemo1(file);


    }
    private static void FileNameDemo1(File file) {
//        打印目录
        System.out.println(file);
//        遍历目录下的文件
        File[] files=file.listFiles();
        for (File file1 : files) {
//            如果是文件夹 则遍历这个文件夹
            if (file1.isDirectory())
                FileNameDemo1(file1);
//            如果是文件 则打印他
            else System.out.println(file1);
        }
    }
}

ListFiles中的文件过滤器 FileFilter FileNameFilter 均为接口
listFiles将File对象一个个得传递到过滤器中进行过滤
符合要求的true得以保存到File[]中

public class FileFilterImpl implements FileFilter {
    @Override
    public boolean accept(File pathname) {
//如果是子文件夹 也得以保存 否则递归时没有子文件夹 查询不了里面的文件
        if (pathname.isDirectory()) return true;
        return pathname.getName().toLowerCase().endsWith(".java");
    }
}
public class FileFilterDemo {
    public static void main(String[] args) {
        File file = new File("D:\\IO");
        FileNameDemo1(file);
    }

    private static void FileNameDemo1(File file) {

//        File[] files=file.listFiles(new FileFilterImpl());

       /* File[] files=file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java");
            }
        });*/

       /*File[] files=file.listFiles((pathname -> pathname.isDirectory()||
               pathname.getName().toLowerCase().endsWith(".java")));*/

        File[] files = file.listFiles(((dir, name) ->
                new File(dir, name).isDirectory() || name.toLowerCase().endsWith(".java")));
        for (File file1 : files) {

            if (file1.isDirectory())
                FileNameDemo1(file1);

            else System.out.println(file1);
        }
    }
}

相关文章

  • 复习JavaSE 11.File 递归

    File构造方法 File(File parent, String child) 从父抽象路径名和子路径名字符串创...

  • JavaSE-File类、递归

    目录 [TOC] 第一章:File类 1.1 File类介绍 ​ java.io.File 类是文件和目录路径...

  • JavaSE之数组复习

    一维数组 介绍 数组是一种引用类型 数组是一种简单的数据结果,线性的结构 数组是一种容器,可以来存储其他元素,数组...

  • JavaSE之String复习

    基本 我们先来看一下String在Jdk中的定义 我们发现这是一个String类被finl进行修饰了,name就可...

  • JavaSE总结(8)File类、递归

    一、java.io.File: 文件 file 用来存储数据 目录 directry 文件夹 用来区分文件 存储...

  • 复习JavaSE 5.继承

    子类不可以访问超类的私有域,只能借助super 调用父类的域访问器super用途:调用超类方法的特殊关键字 不能将...

  • 复习JavaSE 12.IO

    把流定义在try()里,try,catch或者finally结束的时候,会自动关闭 路径中存在中文的办法 IO技术...

  • 序言

    据初次学习JAVASE已过三年,对于细节已渐模糊,现重新观看视频学习复习JAVASE.古人云:温故而知新,这一次希...

  • 201929周复盘:人生的第一桩事:生活

    01 本周回顾 工作:学习BW建模(分层设计),编写BW流程链创建的文档 技能: a. 复习JavaSE ...

  • 进入复习周

    最后一个复习周,需要考算法,Linux,javase,考试周要考一门信息安全,这学期的课不是很多,虽然都没有复习,...

网友评论

    本文标题:复习JavaSE 11.File 递归

    本文链接:https://www.haomeiwen.com/subject/vipppqtx.html