递归遍历文件夹中的文件

时间:2022-04-06 12:30:03
package util;

import java.io.File;
import java.util.ArrayList;

import entity.FileOfDown;

public class FileUtil {
public static ArrayList<File> getFiles(String absolutePath){
return new FileList(absolutePath).fileList ;
}
/**
*
* 功能: 实现遍历指定绝对路径下的所有文件
* 设计原因: 如果单一使用一个方法,则需要在方法递归的时候传递最终存放文件数组的对象。
* 使用一个类则可以将最终存放结果的数组设置为属性,这样递归方法无论递归多深都可以访问属性。
*
*/
private static class FileList {
public ArrayList<File> fileList = new ArrayList<File>() ;
public FileList(String absolutePath ){
getFiles(absolutePath) ;
}
private void getFiles(String absolutePath ){
File file
= new File(absolutePath) ;
if(!file.exists()){
return ;
}
if(file.isDirectory()){
// {@code null} if this abstract pathname does not denote a directory,
//or if an I/O error occurs.
File[] files = file.listFiles() ;
if(files == null || files.length == 0 ){
return ;
}
for(File fileItem : files ){
if(fileItem.isDirectory()){
getFiles(fileItem.getAbsolutePath()) ;
}
else{

fileList.add(fileItem) ;
}
}
}
else{
fileList.add(file) ;
}
}
}
}