遍历文件

//递归
public static void folderMethod(String path){
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null != files) {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println(“文件夹:+ file2.getAbsolutePath());
folderMethod(file2.getAbsolutePath());
} else {
System.out.println(“文件:+ file2.getAbsolutePath());
}
}
}
} else {
System.out.println(“文件不存在!”);
}
}

//非递归
public static void folderMethod1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
//需要一个集合来记录我们遍历的清空
//由下面操作可知我们只需要向集合删除和添加元素不需要查询所以用集合当中的LinkerList提高效率
LinkedList list = new LinkedList<>();
//判断路径是否有效
if (file.exists()) {
//为空直接返回(因为没有下级路径了)
if (null == file.listFiles()) {
return;
}
//把第一层里的文件和文件夹字符数组转化为list元素添加到list集合里
list.addAll(Arrays.asList(file.listFiles()));
//不为空的情况下遍历直至为空
while (!list.isEmpty()) {
//删除list第一个元素(有序就保证每次删除的第一个元素是之前没有操作过的元素)转化为Flie对象(删除元素返回值是被删除的这个元素)
File[] files = list.removeFirst().listFiles();
//为空就跳过(因为没有下级路径了)
if (null == files) {
continue;
}
//遍历该路径
for (File f : files) {
//为文件夹时把该文件夹添加到list集合中再次循环
if (f.isDirectory()) {
System.out.println(“文件夹:+ f.getAbsolutePath());
list.add(f);
folderNum++;
} else {
//为文件时则直接输出
System.out.println(“文件:+ f.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println(“文件不存在!”);
}
System.out.println(“文件夹数量:+ folderNum +,文件数量:+ fileNum);
}

你可能感兴趣的:(遍历文件)