Jave文件递归遍历
1.直接上代码
public class Main {
static int count = 0;
private static void func(File myfile, int[] arr) {
if (myfile.isFile()) {
System.out.print("计数文件");
// count += 1;
//return count;
arr[0] += 1;
return;
}
//非文件
File[] filelists = myfile.listFiles();
try {
/**NullPointerException在文件遍历的时候(貌似是遇到了影藏的系统文件夹,没权限调用故而返回了空指针)
* 的那个遇到空指针的时候就会抛出,所以做好异常处理
* 或者判断是否为null:
*/
for (File it : filelists) {
func(it, arr);
if (it.isDirectory()) {
System.out.print("目录 : ");
}
System.out.println(it.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
return;
}
public static int fileCount(File myfile) {
long startTime = System.currentTimeMillis();
if (!myfile.exists()) {
System.out.println("文件不存在");
return 0;
}
int[] a = {0};
func(myfile, a);
long endTime = System.currentTimeMillis();
System.out.println("执行时间:" + (endTime - startTime) + "ms");
return a[0];
}
2.注意点:
- 空文件的处理(可以用if处理,也可以用try-catch处理)
- int 的按地址传递(此文用了数组的方式)