我想使用java api(v3)仅查询来自google驱动器的顶级文件。 (顶级,我的意思是我不想递归进入文件夹)
我检查了this question,但它似乎没有一个合适的解决方案(即使它有一个公认的解决方案)。
我尝试了几件事:
1)我尝试设置查询
// this gives the shared files, but gives all files, not just the top files
Files.List request = drive.files().list().setQ("sharedWithMe = true");
2)我在某处读到与我共享中的顶级文件没有任何父级,所以我试图获取没有任何父级的文件
类似于' root'在“我的驱动器”文件的“父母”中,我尝试了几个查询:
drive.files().list().setQ("sharedWithMe = true and null in parents");
drive.files().list().setQ("sharedWithMe = true and parents = null");
但它们似乎不起作用。
3)我尝试获取所有文件,然后尝试仅选择没有父文件的文件。
Files.List request = drive.files().list()
.setQ("sharedWithMe = true)
.setFields("nextPageToken, files(id, name, parents)");
即使在输出字段中包含父级, File.getParents()也会提供 NULL (即使对于有父级的文件)。
问题:
我们是否可以使用 Files.list()获取每个文件的父母信息?
有没有办法让文件达到与我共享的顶级文件夹?(通过添加一些查询以及 sharedWithMe = true )
答案 0 :(得分:0)
使用Google Drive API V3中的以下代码,我只能获得与我共享的根目录文件列表。
首先使用以下代码获取与我共享的文件和文件夹
FileList sharedWithMeResult = drive.files().list().setQ("sharedWithMe=true").execute();
要过滤出文件夹,您可以
List<com.google.api.services.drive.model.File> sharedWithMeFiles = sharedWithMeResult.getFiles();
for (com.google.api.services.drive.model.File file : sharedWithMeFiles)
{
if(file.getMimeType().contains("vnd.google-apps.folder"))
continue;
else
System.out.println("Shared File Name = " + file.getName());
}