File的过滤,遍历等操作
列出指定目录下的(包括子目录)的所有文件
File file = new File();
exists() 方法用于判断文件或目录是否存在
isDirectory()方法判断File类的对象是否是目录
throw new IllegalArgumentException();抛出异常
String[] filenames = file.list() //返回的是字符串数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容
//递归
for(String string : filenames){//将filenames数组中的值,循环赋值给string,直到filenames为空时,结束循环
System.out.println(string);
}
//如果要遍历目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象的API
File[] files = file.listFiles(); //返回的是直接子目录(文件)的抽象
//递归,遍历出该目录下所有文件信息,包括子目录下的文件
for(File f :files){
if(f.isDirectory){
//递归遍历该目录下的子目录的信息
listDirectory(file);
}
else{
System.out.pritln(file);
}
}
贴出代码
public class FileUtils {
//列出指定目录下,包括子目录下的所有文件
public static void listDirectory(File dir)throws IOException{
//如果目录不存在,抛出异常给提示
if(!dir.exists()){
throw new IllegalArgumentException("目录"+dir+"不存在");
}
//如果dir不是目录,抛出异常给提示
if(!dir.isDirectory()){
throw new IllegalArgumentException(dir+"不是目录");
}
String[]filename=dir.list();//返回的是字符串数组,子目录名称,不包含子目录下的内容
for (String filedir : filename) {
System.out.println(dir+"\\"+filedir);
}
//如果要遍历子目录下的内容,就需要遍历file对象做递归操作
//file提供了直接返回file对象的api
File[] file=dir.listFiles();//返回子目录(文件)的对象
//如果子目录长度大于0并且不为空,就代表存在
if(file.length>0&&file!=null){
//遍历打印出子目录
for (File file2 : file) {
if(file2.isDirectory()){//拿到目录,false递归,
//递归
listDirectory(file2);
}else{
System.out.println(file);
}
}
}
}
}
public class FileDemo {
public static void main(String[] args) {
try {
FileUtils.listDirectory(new File("/Users/ldq/Documents/Demotest"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}