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;
}
}