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 来自官方文档,但遗憾的是文档是错误的。
我试图只下载根目录中的文件。目前我没有指定任何文件夹,因为我不知道如何指定,所以它会下载其他非根文件夹中的最新文件。我只想要根目录中的文件。获取文件和下载 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 来自官方文档,但遗憾的是文档是错误的。