Google 驱动器剩余 API,仅从根文件夹下载文件

Google drive rest API, Download files from root folder only

我试图只下载根目录中的文件。目前我没有指定任何文件夹,因为我不知道如何指定,所以它会下载其他非根文件夹中的最新文件。我只想要根目录中的文件。获取文件和下载 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);
        }
    }
}

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

您需要使用Q参数来搜索

q string A query for filtering the file results. See the "Search for Files" guide for supported syntax.

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

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

有很多注意事项。

您的第 3 行需要

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

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

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

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

应该是这样的

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

我知道你 copy/pasted 来自官方文档,但遗憾的是文档是错误的。