java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中。
假设指定路径为path,目标集合为fileList,遍历指定路径下的所有文件,如果是目录文件则递归调用,如果是普通文件则放入fileList中。
根据这个思路,得到java源代码如下所示:
//方法getFiles根据指定路径获取所有的文件
public ArrayList<File> getFiles(String path) throws Exception {
//目标集合fileList
ArrayList<File> fileList = new ArrayList<File>();
File file = new File(path);
if(file.isDirectory()){
File []files = file.listFiles();
for(File fileIndex:files){
//如果这个文件是目录,则进行递归搜索
if(fileIndex.isDirectory()){
getFiles(fileIndex.getPath());
}else {
//如果文件是普通文件,则将文件句柄放入集合中
fileList.add(fileIndex);
}
}
}
return fileList;
}
获取文件名:
fileList = getFiles(this.getMenuPath());
ArrayList<String> iconNameList = new ArrayList<String>();//返回文件名数组
for(int i=0;i<fileList.size();i++){
String curpath = fileList.get(i).getPath();//获取文件路径
iconNameList.add(curpath.substring(curpath.lastIndexOf("\\")+1));//将文件名加入数组
}
其中,在action中声明变量menuPath,并生成get和set方法:
private String menuPath = "/resources/menuIcon";
则this.getMenuPath()可以获取该路径,传入getFiles()方法时,该路径变为访问的绝对路径,例如“D:\\tomcat\\...\\resources\\menuIcon”