递归获取jave文件并存储在数组列表中

克里斯 :

我正试图.java-files从给定directory及其全部中获得全部收益subdirectories香港专业教育学院提出了一个递归的解决方案,prints淘汰了我想要的所有文件,但我的实际目标是将所有文件存储paths到,array以便我可以使用它们。目前,我一直在努力存储它们。这是我的代码:

public static ArrayList<String> getJavaFiles(Path path) throws CodeValidationException {


    ArrayList<String> files = new ArrayList<String>();

    DirectoryStream<Path> stream = null;
    try {

        stream = Files.newDirectoryStream(path);
        for (Path entry : stream) {
            if (Files.isRegularFile(entry)) {
                if(entry.getFileName().toString().endsWith(".java")) {

                    boolean isRegularExecutableFile = Files.isRegularFile(entry)
                            && Files.isReadable(entry);
                    //&& Files.isExecutable(entry) -> not working

                    if(isRegularExecutableFile) { 
                        System.out.println("path: " + entry);
                        files.add(entry.getFileName().toString());
                    }
                };

            } else if (Files.isDirectory(entry)) {
                getJavaFiles(entry);
            }

        }

        return files;


    } catch (IOException e) {

        throw new CodeValidationException(String.format("error reading folder %s: %s", path, e.getMessage()), e);

    } finally {
        if(stream != null) {
            try {
                stream.close();
            } catch (IOException e) {

            }
        }
    }

}

编辑:

这是一个例子:

这是从getJavaFiles

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 / Main.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/impl/SimpleCodeValidator.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ impl / TaskValidation.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ CodeValidationException.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ ValidationResult.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ Warning.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ CodeValidator.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ ValidationTask.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/ AJP /作业1 /作业1 / src / de / uniba / wiai / dsg / ajp /作业1 /验证/ WarningType.java

路径:/用户/克里斯/ Uni Bamberg / 3。学期/AJP/inputFile.java

但是当打印出ArrayList我从函数中获得的结果时,我得到的是:

for(int i = 0; i < files.size(); i++) {   
    System.out.print(files.get(i)); 
}

/用户/克里斯/ Uni Bamberg / 3。学期/AJP/inputFile.java

Omid.N:

您的代码不起作用,因为您只是在检查第一个目录,而没有在子目录中添加文件。在您中,else-if您要getJavaFiles(entry)再次打电话,但是您没有将从它返回的列表添加到现有列表中:

else if (Files.isDirectory(entry)) {
            getJavaFiles(entry);
    }

您可以像这样将它们添加到列表中:

else if (Files.isDirectory(entry)) {
            files.addAll(getJavaFiles(entry));
     }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从数据库中获取数据并存储在数组列表中的程序

PHP-在数组中获取数组并存储/操作

在提示中获取多个值并存储在数组中

从文件中读取整数并存储在数组中

读取文件以删除空格并存储在数组中

BASH读取txt文件并存储在数组中

Python正则表达式:在文本文件中获取正则表达式模式并存储在数组或列表中

在目录中列出文件并存储在数组中。该数组可以在循环外访问

从数据库中读取数据并存储在数组列表对象中

从 sqlite 数据库中获取值并存储在数组中 -Nodejs

按列从csv读取数据并存储在数组列表中

使用“,”分割字符串并存储在数组列表中

linux bash脚本获取用户输入并存储在数组中

如何获取复选框值并存储在数组中

Firebase 获取所有子值并存储在数组中

如何使用javascript获取td值并存储在数组中?

拆分String数组并存储在列表中

在Shell脚本中使用空行空间拆分文件并存储在数组中

读取文件文本并存储在数组2d中

逐行读取C并存储在数组中

从存储在数组中的文件中获取特定的行内容

从txt文件读取数据并存储在数据框中

如何获取字符串并存储到数组中然后与列表进行比较

我想获取具有相同字段名称的对象中的所有值并存储在数组中

解析json文件以收集数据并存储在列表/数组中

如何合并存储在python嵌套列表中的numpy数组

从文件中读取数据并存储到结构数组中

在Firebase中获取并存储多维数组而不是JSON

Java从数组列表中制作子列表并存储到对象列表的数组列表中