首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列出文件夹和子文件夹中的所有文件

列出文件夹和子文件夹中的所有文件
EN

Stack Overflow用户
提问于 2013-02-04 03:34:43
回答 3查看 229.4K关注 0票数 63

可能重复:

List all files from a directory recursively with Java

如何返回包含文件夹和子文件夹中所有文件的文件数组?我的方法只适用于文件夹,而不包含子文件夹。

代码语言:javascript
复制
public File[] listf(String directoryName) {

    // .............list file
    File directory = new File(directoryName);

    // get all the files from a directory
    File[] fList = directory.listFiles();

    for (File file : fList) {
        if (file.isFile()) {
            System.out.println(file.getAbsolutePath());
        } else if (file.isDirectory()) {
            listf(file.getAbsolutePath());
        }
    }
    System.out.println(fList);
    return fList;
}                        
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-04 03:41:40

使用您当前的代码,进行以下调整:

代码语言:javascript
复制
public void listf(String directoryName, List<File> files) {
    File directory = new File(directoryName);

    // Get all files from a directory.
    File[] fList = directory.listFiles();
    if(fList != null)
        for (File file : fList) {      
            if (file.isFile()) {
                files.add(file);
            } else if (file.isDirectory()) {
                listf(file.getAbsolutePath(), files);
            }
        }
}
票数 95
EN

Stack Overflow用户

发布于 2013-02-04 03:37:28

使用Apache commons中的FileUtils

代码语言:javascript
复制
listFiles

public static Collection<File> listFiles(File directory,
                                         String[] extensions,
                                         boolean recursive)
Finds files within a given directory (and optionally its subdirectories) which match an array of extensions.
Parameters:
directory - the directory to search in
extensions - an array of extensions, ex. {"java","xml"}. If this parameter is null, all files are returned.
recursive - if true all subdirectories are searched as well
Returns:
an collection of java.io.File with the matching files
票数 36
EN

Stack Overflow用户

发布于 2013-02-04 03:45:24

你可以返回一个List而不是数组,事情就变得简单多了。

代码语言:javascript
复制
    public static List<File> listf(String directoryName) {
        File directory = new File(directoryName);

        List<File> resultList = new ArrayList<File>();

        // get all the files from a directory
        File[] fList = directory.listFiles();
        resultList.addAll(Arrays.asList(fList));
        for (File file : fList) {
            if (file.isFile()) {
                System.out.println(file.getAbsolutePath());
            } else if (file.isDirectory()) {
                resultList.addAll(listf(file.getAbsolutePath()));
            }
        }
        //System.out.println(fList);
        return resultList;
    } 
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14676407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档