搜狐移动视频面试题,题目很简单,但是要完完整整用笔写出代码来对于一个比较依赖工具的程序员来说还是比较不易的
import java.io.File;
import java.util.LinkedList;
/**
* @brief 遍历文件夹下的所有文件
*
* @author - 2014-6-22 吖大哥 创建初始版本
*
*/
public class FileDemo {
public static void main(String[] args) {
String path = "D:\\doc";
scanDir(path);
System.out.println("===============");
scanDire(path);
}
// 递归遍历文件夹下的所有文件
public static void scanDir(String path) {
File f = new File(path);
File[] listFiles = f.listFiles();
for (File ff : listFiles) {
if (ff.isDirectory()) {
scanDir(ff.getAbsolutePath());
} else {
System.out.println(ff.getPath());
}
}
}
// 循环遍历文件夹下的所有文件
public static void scanDire(String path) {
File f = new File(path);
LinkedList<File> list = new LinkedList<File>();
File[] listFiles = f.listFiles();
for (File ff : listFiles) {
if (ff.isDirectory()) {
list.add(ff);
} else {
System.out.println(ff.getPath());
}
}
File tmp;
while (!list.isEmpty()) {
tmp = list.removeFirst();// 首个目录
if (tmp.isDirectory()) {
listFiles = tmp.listFiles();
if (listFiles == null) {
continue;
}
for (int i = 0; i < listFiles.length; i++) {
if (listFiles[i].isDirectory()) {
list.add(listFiles[i]);// 目录则加入目录列表,关键
} else {
System.out.println(listFiles[i]);
}
}
} else {
System.out.println(tmp);
}
}
}
}