【问题标题】:Google drive rest API, Download files from root folder onlyGoogle drive rest API,仅从根文件夹下载文件
【发布时间】:2017-02-15 10:38:39
【问题描述】:

我正在尝试仅下载根目录中的文件。目前我没有指定任何文件夹,因为我不知道如何指定,所以它会下载其他非根文件夹中的最新文件。我想要的只是根目录中的文件。获取文件和下载 URL 的代码如下:

public static void startDownload() throws IOException, ParseException {

    Drive serv = getDriveService();

    FileList result = serv.files().list().setMaxResults(10).execute(); //there are 10 files in the root folder     

    List<File> listA = result.getItems();

    if (listA == null || listA.isEmpty()) {
        System.out.println("No files found.");
    } else {
        System.out.println("Files:"+lista.size());
        for (File file : listA) {
            System.out.printf("%s (%s)\n", file.getTitle(), file.getDownloadUrl());
            downloadFile(serv, file);
        }
    }
}

我想只下载根文件中的所有文件,而不是任何其他文件夹中的所有文件。任何帮助将不胜感激。

【问题讨论】:

    标签: java google-api google-drive-api google-api-java-client


    【解决方案1】:

    需要使用Q参数进行搜索

    q string 过滤文件结果的查询。请参阅“搜索 文件”指南,了解支持的语法。

    发送类似下面的内容将返回所有不是根目录的文件夹。

    mimeType != 'application/vnd.google-apps.folder' and 'root' in parents

    【讨论】:

      【解决方案2】:

      有很多考虑因素。

      你的第 3 行需要是

      String q = "trashed = false and 'root' in parents and mimeType != 'application/vnd.google-apps.folder' "

      FileList 结果 = serv.files().list().setFields("*").setQ(q).setMaxResults(10).execute();

      您需要注意这将返回最多 10 个结果,但更重要的是,您需要注意没有最少结果数。这意味着如果您有 11 个文件,您可能在第一次迭代中获得 10 个,在第二次迭代中获得 1 个。但是,您也可以得到 1 和 10,或 3 和 6 和 2,或 0 和 0 以及 1 和 10。您需要继续获取结果,直到 getNextPageToken() == null 的值。所以你的线

      if (listA == null || listA.isEmpty()) {

      应该是这样的

      if (result.getNextPageToken() == null) {

      我知道您已经从官方文档中复制/粘贴,但遗憾的是该文档是错误的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多