gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:36:56 25 4
gpt4 key购买 nike

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

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/

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