可直接测试,亲测有效,传入路径path即可
/**
* 非递归遍历
* @param path
* @return
*/
@PostMapping("download02")
public static LinkedList GetDirectory(String path) {
System.out.println("-------------------------"+path);
File file = new File(path);
LinkedList<File> Dirlist = new LinkedList<File>();
// 保存待遍历文件夹的列表
LinkedList<File> fileList = new LinkedList<File>();
// 调用遍历文件夹根目录文件的方法
GetOneDir(file, Dirlist, fileList);
File tmp;
while (!Dirlist.isEmpty()) {
// 从文件夹列表中删除第一个文件夹,并返回该文件夹赋给tmp变量
tmp = (File) Dirlist.removeFirst();
// 遍历这个文件夹下的所有文件
GetOneDir(tmp, Dirlist, fileList);
}
return fileList;
}
// 遍历指定文件夹根目录下的文件
private static void GetOneDir(File file, LinkedList<File> Dirlist,
LinkedList<File> fileList) {
// 每个文件夹遍历都会调用该方法
File[] files = file.listFiles();
//判断文件夹是否为空 为空则返回
if (files == null || files.length == 0) {
return;
}
for (File f : files) {
if (f.isDirectory()) {
Dirlist.add(f);
} else {
//输出读取的文件夹名字
System.out.println("============================"+f);
// 这里列出当前文件夹根目录下的所有文件,并添加到fileList列表中
fileList.add(f);
}
}
}