非递归,层序遍历的方法
/**
* 遍历文件,非递归方式
*
* @param path path
*/
public void ergodic1(String path) {
// 记录文件数量和文件夹数量
int fileNum = 0, foldNum = 0;
File file = new File(path);
if (file.exists()) {
if (null == file.listFiles()) {
System.out.println("文件:" + file.getAbsolutePath());
fileNum++;
System.out.println("文件的数量:" + fileNum + "; 文件夹的数量:" + foldNum);
return;
}
LinkedList<File> linkedList = new LinkedList<>();
// 将文件添加到list
linkedList.addAll(Arrays.asList(file.listFiles()));
while (!linkedList.isEmpty()) {
// 从集合中移除第一个文件file
File[] files = linkedList.removeFirst().listFiles();
if (files == null) {
continue;
}
for (File file1 : files) {
if (file1.isDirectory()) {
linkedList.add(file1);
System.out.println("文件夹:" + file1.getAbsolutePath());
foldNum++;
} else {
System.out.println("文件:" + file1.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在");
}
System.out.println("文件的数量:" + fileNum + "; 文件夹的数量:" + foldNum);
}
递归查找
/**
* 递归方式遍历file
*/
public void recursionErgodicFile(String path) {
int fileNum = 0, foldNum = 0;
File file = new File(path);
if (file.exists()) {
if (null == file.listFiles()) {
fileNum++;
System.out.println("文件:" + file.getAbsolutePath());
System.out.println("文件的数量:" + fileNum + " ; 文件夹的数量:" + foldNum);
return;
}
for (File listFile : file.listFiles()) {
if (listFile.isDirectory()) {
foldNum++;
System.out.println("文件夹:" + listFile.getAbsolutePath());
// 递归调用
recursionErgodicFile(listFile.getAbsolutePath());
} else {
fileNum++;
System.out.println("文件:" + file.getAbsolutePath());
}
}
} else {
System.out.println("文件不存在");
}
System.out.println("文件的数量:" + fileNum + " ; 文件夹的数量:" + foldNum);
}
网友评论