Google驱动器休息API,仅从根文件夹下载文件
问题描述:
我试图只下载根目录中的文件。目前我没有指定任何文件夹,因为我不知道如何下载不在根目录下的其他文件夹中的最新文件。我想要的只是根中的文件。这是获得文件和下载网址的代码如下:Google驱动器休息API,仅从根文件夹下载文件
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);
}
}
}
我想下载的所有文件在根文件,而不是在任何其它文件夹。任何帮助,将不胜感激。
答
有一些注意事项。
你的3号线的需求是
串Q = “丢弃=假,并在父母和mime类型!= '应用/ vnd.google-apps.folder' 根'”
文件清单结果= serv.files().list()。setFields(“*”).setQ(q).setMaxResults(10).execute();
你需要知道,这将最大的10个结果返回,但更是这样,你需要知道,有结果没有最低数量。这意味着如果你有11个文件,你可能可能在第一次迭代中得到10,在第二次迭代中得到1。但是,您也可以获得1和10,或者3和6和2,或者0和0以及1和10.您需要继续获取结果,直到值为getNextPageToken() == null
。所以,你的行
如果(== listA的空|| listA.isEmpty()){
应该像
如果(result.getNextPageToken()== NULL ){
我意识到你已经从官方文档复制/粘贴,但遗憾的是文档是错误的。
答
您需要使用Q参数来搜索
q串查询用于过滤文件的结果。有关支持的语法,请参阅“搜索 文件”指南。
发送类似以下内容的内容将返回与父级父目录不同的文件夹。
mime类型!= '应用/ vnd.google-apps.folder' 和父母 '根'