遍历指定文件夹下的所有目录(不包括子目录)和文件,写一个遍历目录方法的测试类FileUtils:
package cn.hcnu.edu;
import java.io.File;
import java.io.IOException;
public class FileUtils {
//遍历打印dir下所有文件和文件夹的名字,为static方法方便在另一个测试类中调用
public static void listDirectory(File dir) throws IOException{
if(!dir.exists()){ //判断传入的dir路径是否真的存在,不存在将报出异常
throw new IllegalArgumentException("文件"+dir+"不存在");
}
if (!dir.isDirectory()) { //判断传入的dir路径是否是一个文件夹,不是将报出异常
throw new IllegalArgumentException(dir+"不是目录");
}
//dir.list()把dir目录下的文件或文件夹名称变成一个string数组
String[] files = dir.list();
for (String string : files) {
System.out.println(string);
}
}
再创建一个测试类,用于测试这个工具类FileUtilsTest:
package cn.hcnu.edu;
import java.io.File;
import java.io.IOException;
public class FileUtilsTest {
/**
* @param args
*/
public static void main(String[] args) throws IOException{
//通过类名直接调用该类的静态方法。
//传入一个路径
FileUtils.listDirectory(new File("E:\\netbean-workplace"));
}
}
运行这个文件就可以看到打印出来的文件名称了。
如果需要遍历指定文件夹的所有目录,包括子目录下的所有目录和文件。则需要把工具类中的那段代码换成下面这段:
//dir.listFiles() 返回直接子目录的路径组成的file类型的数组
// File[] fileName = dir.listFiles();
//判断该子目录存在,并且有内容
// if (fileName != null&&fileName.length > 0) {
// for (File file : fileName) { //File[]中的元素一一赋值给file
// if (file.isDirectory()) { //判断file是否任然是目录(文件夹),是就继续调用listDirectory(file);即递归调用。如果不是文件夹了,就将该文件的路径打印。
// listDirectory(file);
// }else {
// System.out.println(file);
// }
// }
// }
}
注意,dir.list()返回的是一个String数组,里面包含了dir下所有的文件和文件夹名称。而listFiles()返回的是一个File数组,里面包含了dir下所有文件和文件夹的路径。