gpt4 book ai didi

java - 使用 java Files.walk 仅从根文件夹获取文件名并跳过其子目录时出现问题

转载 作者:行者123 更新时间:2023-12-02 04:21:49 26 4
gpt4 key购买 nike

我有一个包含三个文件和 2 个子文件夹的文件夹。我只是尝试从该根文件夹读取包含文件名作为字符串的路径,但唯一的条件是我想排除位于同一文件夹中的其他目录。

文件夹结构:

Folder A
|
|
DirectoryA
fileA.xlsx, fileB.xlsx

我的期望

我想要的是将 fileA.xlsx 和 FileB.xlsx 的路径保存为列表中的字符串,即

[文件夹A/fileA.xlsx,文件夹A/fileB.xlsx]

我的输出:

我的输出还包括子目录中的文件内容,如下所示,这是我不想要的。

[FolderA/DirectoryA/somefile.txt、FolderA/fileA.xlsx、FolderA/fileB.xlsx]

我尝试过的

public List<String> getAllExcelFilesList() throws IOException {
excelFilesList = new ArrayList<String>();
excelFilesList = Files.walk(Paths.get(path_to_FolderA))
.filter(p -> p.getFileName().toString().startsWith("file"))
.filter(Files::isRegularFile)
.map(Path::toString)
.collect(Collectors.toList());
LOG.info("all files saved to list for extraction");
return excelFilesList;

我也在这里尝试了以下答案 Files.walk(), calculate total size但无法使我的程序运行。也许我错过了一些非常微不足道的东西。

编辑:

从性能角度来看,程序最好不要遍历子文件夹中的每个项目,因为这些子目录将来可能包含超过 1000 个文件。

最佳答案

好吧,我尝试了 @holger 的评论来获得解决方案,它工作得很好。以下是我的解决方案:

public List<String> getAllExcelFilesList() throws IOException {
excelFilesList = new ArrayList<String>();
excelFilesList = Files.list(Paths.get(path_to_FolderA))
.filter(p -> p.getFileName().toString().startsWith("file"))
.filter(Files::isRegularFile)
.map(Path::toString)
.collect(Collectors.toList());
LOG.info("all files saved to list for extraction");
return excelFilesList;

我尝试用 Files.list 更改 Files.walk,现在效果很好:)

关于java - 使用 java Files.walk 仅从根文件夹获取文件名并跳过其子目录时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com