初级Java面试经常会遇到写一个递归遍历指定文件夹下的所有文件,今天闲来无事,看了些例子,自己整理一下。希望可以帮助到初学者,顺便也算自己的一个笔记,方便以后查阅。
package files;
import java.io.File;
public class RecursionFiledir {
public static void main(String[] args) throws Exception {
File file = new File("D:"+File.separator); // 指定操作目录
showFileList(file); // 列出给定目录中的全部内容
showAllFilesSimple(file); // 递归显示指定目录的全部内容(简单版)
showAllFilesFull(file); // 递归显示指定目录的全部内容(完整版)
printFile(file, 0); // 遍历指定文件夹下的所有文件
}
//列出指定文件夹下的全部内容
public static void showFileList(File file) {
File files[] = file.listFiles(); // 列出给定目录中的全部内容(带路径)
for (int i=0; i<files.length; i++) {
System.out.println(files[i]);
}
}
/**
* 递归显示指定目录的全部内容(简单版)
* @param file
* @throws Exception
*/
public static void showAllFilesSimple(File file) throws Exception {
if (file != null) { // 判断对象是否为空
File[] files = file.listFiles();
for (int i=0; i<files.length; i++) {
System.out.println(files[i].getAbsolutePath());
if (files[i].isDirectory()) {
showAllFilesSimple(files[i]);
}
}
}
}
/**
* 递归显示指定目录的全部内容(完整版)
* @param file
* @throws Exception
*/
public static void showAllFilesFull(File file) throws Exception {
if (file != null) { // 判断对象是否为空
if (file.isDirectory()) { // 判断如果是目录
File files[] = file.listFiles(); // 列出全部的文件
if (files != null) { // 判断此目录能否列出
for(int i=0; i<files.length; i++) {
showAllFilesFull(files[i]); // 此处路径有可能是目录,所以继续执行该方法
}
}
} else {
System.out.println(file); // 显示出路径
}
}
}
/**
* 遍历指定文件夹下的所有文件
* @param file 传入的目录
* @param level 等级
*/
public static void printFile(File file, int level) {
for (int i = 0; i<level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File temp : files) {
printFile(temp, level+1);
}
}
}
}