java - 如何在文件列表中搜索文件名

标签 java list file

我需要从文件名列表中查找文件名,并根据找到的结果启动两个方法。我尝试过:

FileList result = service.files().list()
             .setPageSize(10)
             .setFields("nextPageToken, files(id, name)")
             .execute();
        List<File> files = result.getFiles();
        if (files == null || files.size() == 0) {
            System.out.println("No files found.");
        } else {
            System.out.println("Files:");
            for (File file : files) {
                System.out.printf("%s (%s)\n", file.getName(), file.getId());
                Boolean found = files.contains("XYZ");
                if(found)
                {
                    insertIntoFolder();
                } else {
                    createFolder();
                }
            }
        }

我需要从文件名列表(例如sjh、jsdhf、XYZ、ASDF)中找到XYZ(文件名)。一旦找到它,我就需要停止搜索。如果名称与名称列表不匹配,我只需在检查该列表中的所有名称后创建一个文件夹一次。

最佳答案

Boolean found = files.contains("XYZ");

这一行有问题。 filesFile 的列表对象,其中没有一个与 String 匹配"XYX" List.contains() 本质上是调用 Object.equals()列表中的每个元素,以及 File.equals("XYZ") 将始终返回 false .

如果您在像 Eclipse 这样的 IDE 中编程,它应该在这一行显示警告,因为这是一个可以在编译时检测到的错误。

确定是否 FileList<File>有一个与给定字符串匹配的文件名,您需要对文件名本身进行操作,因此上面的行应该是:

boolean found = file.getName().equals("XYZ");

根据您想要匹配的具体内容,您可能想要使用 .getName() , .getAbsolutePath() ,或.toString() .

<小时/>

使用 Path 也是一个好主意。 Java 7 中引入的 API,而不是 File ,此时它本质上是一个遗留类。

如果您想要一个比手动循环文件寻找匹配项更优雅的解决方案,您可以使用 Files.newDirectoryStream(Path, Filter) 它允许您定义 Filter仅匹配某些文件的谓词,例如

Files.newDirectoryStream(myDirectory, p -> p.getFileName().toString().equals("XYZ"))

File.list(FilenameFilter) File 的使用类似的功能对象,但同样,更喜欢使用 Path如果可能的话,API。

关于java - 如何在文件列表中搜索文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942574/

相关文章:

java - 如何删除 Java 文件中单词的特定结尾?

java - 为什么 JUnit 断言方法在 Java 中不是通用的?

java - 在一个 try 语句中打开多个资源不可靠吗?为什么?

java - 如何在集成测试中模拟 Spring HandlerInterceptorAdapter?

html - 在 li 元素内显示 flex 隐藏编号

python - 循环列表并打印字符串的这些元素

c++ - 如何在 Linux 上使用 C++ 将文件属性 (1644) 设置为特定文件

java - 这行java代码有什么问题吗?

python - 从匹配索引开始循环多次遍历列表

c++ - 如何在 Qt 中将 TreeView 保存为 .csv 文件?