我只想使用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)

最佳答案

使用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());
}

关于java - 从Google Drive V3 Java API中检索与我共享的顶级文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44090344/

10-12 12:38
查看更多