2017-02-15 108 views
1

我試圖只下載根目錄中的文件。目前我沒有指定任何文件夾,因爲我不知道如何下載不在根目錄下的其他文件夾中的最新文件。我想要的只是根中的文件。這是獲得文件和下載網址的代碼如下: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); 
     } 
    } 
} 

我想下載的所有文件在根文件,而不是在任何其它文件夾。任何幫助,將不勝感激。

回答

1

有一些注意事項。

你的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 ){

我意識到你已經從官方文檔複製/粘貼,但遺憾的是文檔是錯誤的。

2

您需要使用Q參數來搜索

q串查詢用於過濾文件的結果。有關支持的語法,請參閱「搜索 文件」指南。

發送類似以下內容的內容將返回與父級父目錄不同的文件夾。

mime類型!= '應用/ vnd.google-apps.folder' 和父母 '根'