直接上代码
package com.demo.test;
import java.io.File;
import java.util.LinkedList;
import java.util.Queue;
/**
* @author while(true){study}
* @date 2018年2月26日 下午2:19:21
* @Description 用队列来循环指定文件夹下面的所有文件,包括所有的子文件夹下面的文件
* @version V1.0
*/
public class Main2 {
public static void main(String[] args) {
File file = new File("D:\\项目部署");
showFileName(file);
}
/**
* 循环方法
* @param file
*/
public static void showFileName(File file) {
if(!file.isDirectory()) {
//单个文件
System.out.println(file.getName());
return;
}
Queue<File> queue = new LinkedList<>();
addAndPrint(file, queue);
while(queue.peek() != null) {
File queryFile = queue.poll();
if(queryFile.isDirectory()) {
addAndPrint(queryFile, queue);
} else {
System.out.println(queryFile.getName());
}
}
}
/**
* 打印文件名称或者把文件夹加到队列中
* @param file
* @param queue
*/
public static void addAndPrint(File file, Queue<File> queue) {
File[] files = file.listFiles();
for(File f : files) {
if(f.isDirectory()) {
queue.add(f);
continue;
}
System.out.println(f.getName());
}
}
}