Google驱动器休息API,仅从根文件夹下载文件

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' 和父母 '根'