在这之前 有一道练习题是要求找出当前文件夹遍历之后的最大字节文件和最小字节文件 其实有相应的length();的方法 直接可以利用找最大数和最小数的算法
重点算法——子文件遍历:
代码示例:
package le;
import java.io.File;
public class Files{
public static void findAll(File file){
//判断文件是否存在
if (!file.exists()) {
System.out.println("文件不存在!");
}
//如果是文件,直接打印地址+文件名
if (file.isFile()){
System.out.println(file.getPath() +" "+ file.getName());
}else {
//如果不是文件,则取路径,通过路径获取文件,遍历文件
File[] files =file.listFiles();
if (files != null) {
for (File f: files){
if (f == null){
break;
}else {
findAll(f);
}
}
}
}
}
public static void main(String[] args) {
File file = new File("C:\\Windows");
findAll(file);
}
}
细节:
File[] files =file.listFiles(); 这个语法只是在实例化file时 遍历这个文件夹下的文件或文件夹 因为一个文件夹打开可能还有文件夹(就像俄罗斯套娃一样)
那么如何达到遍历到没有文件夹只剩文件呢?
就利用 File[] files =file.listFiles();这个语法一个个不断打开
计算机最喜欢做的事就是穷举 如何到达, 这里就需要递归函数的思想 不断的自身调用进行遍历。一个个打开文件夹来查询
为了保证遍历打开的是文件夹而不是文件
特此运用了if else语句进行判定
if (file.isFile()) 判定文件或者if(file.isDirectory())判定文件夹。
以及if.exists() 文件是否存在。