Edgar--一个搜索java文件的小小练习(小小总结一下2个月来的代码风格相关变化)

summary

之前的代码没有发出来是因为,我发现怎么测试都没过。。。当时的代码偷偷看了一下。
一个是感觉当时路子很野,但是知识很不扎实吧,但是不会写这个全局遍历,导致递归的时候,这个文件个数带不出来,然后我用来一个数组中的一位,当时不太理解引用数据类型就是很模糊的去做的。现在的话,自然而然就直接用全局静态遍变量。
二是感觉当时的代码封装性很差,存在很冗余。这次的话,利用重载基本解决了冗余的问题。感觉确实是思路上了一个小台阶。
三就是更加注意代码风格了(快捷键确实好用。。)

 
/*
 * 功能:搜索相应文件下的java文件 (包括子文件夹下的java文件)
 * 思路:递归实现?
 * 对于一个文件 可能是文件也可能是一个文件夹  
 *            文件就判断尾部是不是.java
 *			  文件夹就继续打开
 */
public class Demo1 {
     
    // 定义java文件个数为全局变量
    static int sum = 0;
    public static void main(String[] args) throws IOException {
     
        // 1.打开测试文件夹
        File file = new File("/Users/mac/Desktop/test");
        // 2.计算部分
        findJava(file);
        // 3.输出部分
        System.out.println(sum);
    }
    static void findJava(File file) {
     
        if (file.isDirectory()) {
     
            // 如果是文件夹的话,下面会有很多文件形成一个文件数组
            File[] files = file.listFiles();
            findJava(files);
        } else {
     
            // 如果是文件的话
            if (file.getName().endsWith(".java")) {
     
                sum++;
            }
        }
    } 
    // 重载搜索函数 此时确定文件是一个文件夹了,要对文件夹下所有文件进行遍历
    static void findJava(File[] file) {
     
        for (int i = 0; i < file.length; i++) {
     
            findJava(file[i]);
        }
    }
}

最新 2020.6.2 发现上面的重载可以优化

public class Demo1 {
     
    public static void main(String[] args) throws IOException {
     
        // 1.打开测试文件夹
        File file = new File("/Users/mac/Desktop/buka");
        // 2.搜索部分
        findJava(file);
       
    }
    static int findJava(File file) {
     
        if (file.isDirectory()) {
     
            // 如果是文件夹的话,下面会有很多文件形成一个文件数组
            File[] files = file.listFiles();
            for (int i = 0; i < files.length; i++) {
     
            findJava(files[i]);
            }
        } else {
     
            // 如果是文件的话
            if (file.getName().endsWith(".java")) {
     
                 System.out.println(file.getName());
            }
        }
        return 0;
    }  
}

你可能感兴趣的:(Java基础)