当前位置: 首页 > 面试题库 >

列出Java中目录和子目录中的文件,仅包括部分文件路径

包翔
2023-03-14
问题内容

我需要从给定目录获取文件及其父目录的路径,但不包括它。

因此,例如,如果给我的方法指定path:/home/user/test作为路径,它将返回该目录及其下所有文件的路径。

因此,如果/home/user/test有子文件夹:,/subdir1并且/subdir2每个包含file1.txtfile2.txt则该方法的结果将是2个字符串,其中包含/subdir1/file1.txt/subdir2/file2.txt

并且如果subdir1在其中有一个目录,该目录中subsubdirfile3.txt,则为该文件创建的字符串将为/subdir1/subsubdir/file3.txt,并且如果还有其他子目录可以继续。

我的想法是我只想要文件上方的目录路径,而不是绝对路径,因此只希望初始给定路径之后的目录。

我知道它有些混乱,但是我相信有人可以理解它。现在,我所拥有的只是一个递归函数,它可以打印出文件名及其绝对路径。

有什么帮助吗?


问题答案:

如果您尝试过一些事情并询问有关该问题的信息,那将会很好。

然而…

public class TestFileSearch {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new TestFileSearch();
    }

    public TestFileSearch() {
        File parentPath = new File("C:/Users/shane/Documents");
        List<String> files = list(parentPath);

        for (String file : files) {
            System.out.println(file);
        }
    }

    protected List<String> list(File parent) {
        return listFiles(parent, parent);
    }

    protected List<String> listFiles(File parent, File folder) {
        List<String> lstFiles = new ArrayList<String>(25);
        if (folder.isDirectory()) {

            File[] files = folder.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        lstFiles.addAll(listFiles(parent, file));
                    } else {
                        String path = file.getPath();
                        String offset = parent.getPath();

                        path = path.substring(offset.length());
                        lstFiles.add(path);
                    }
                }
            }
        }

        return lstFiles;
    }
}

您可以简单地进行普通的文件夹递归,返回文件列表和前缀的THEN条,但这取决于您



 类似资料:
  • 问题内容: 列出1000多个目录和子目录中文件名的最快方法是什么? 编辑; 我使用的当前代码是: 问题答案: 看起来不错(递归遍历目录)瓶颈将是您需要执行的所有文件I / O操作,优化Java不会显示任何实际改进。

  • 问题内容: 假设我有一个目录中,其中有3个符号连接其他目录 ,和。我想列出中的所有文件,包括在那些,和。 为了更通用,我想列出所有文件,包括目录中的符号链接文件。,等停止在符号链接上,而无需导航到它们以进一步列出。 问题答案: 该选项将完成您想要的。它取消引用符号链接。 因此,您的命令将是: 您也可以使用 该选项指示find跟随符号链接到目录。 在Mac OS X上使用 如已弃用。

  • 问题内容: 在Python中,我只想列出当前目录中的所有文件。我不希望从任何子目录或父目录中列出文件。 似乎确实有类似的解决方案,但它们似乎对我不起作用。这是我的代码段: 假设我在当前目录中有2个文件holygrail.py和Tim。我也有一个文件夹,其中包含两个文件- 我们称它们为Arthur和Lancelot。当我运行脚本时,这就是我得到的: 我对holygrail.py和Tim感到满意。但是

  • 在Python中,我只想列出当前目录中的所有文件。我不想从任何子目录或父目录中列出文件。 似乎也有类似的解决方案,但它们似乎不适合我。以下是我的代码片段: 假设我有两个文件,holygrail.py和蒂姆在我的当前目录。我也有一个文件夹,里面有两个文件——让我们称之为亚瑟和兰斯洛特。当我运行脚本时,这是我得到的: 我对holygrail.py和蒂姆很满意。但是亚瑟和兰斯洛特这两个文件,我不想列出来

  • 问题内容: 我有一个具有以下结构的文件夹 我只对rootDir中的xml文件感兴趣。如果我使用JDOM读取XML,则以下代码还将考虑“ testDirectory”中的文件并吐出“内容不允许异常” 如何在使用listFiles方法时排除子目录?以下代码可以工作吗? 问题答案: 使用a 代替,因为它将使您能够访问实际文件,然后包括对

  • 问题内容: 如何在Clojure特定目录中的所有文件中创建一个列表?我必须求助于Java还是Clojure可以本地处理? 问题答案: 使用功能。 用法示例: