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;
    }  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值