2016-08-10 113 views
0

如何列出文件夾層次結構並在Dropbox帳戶內生成文件? 下面的方法僅列出根目錄的文件夾。任何人都知道圖書館會告訴你是否有這樣的功能?Dropbox API列表文件夾和文件夾遞歸

ListFolderResult result; 
    try { 
     result = client.files().listFolder(StringUtils.EMPTY); 

     while (true) { 
      for (Metadata metadata : result.getEntries()) { 
       System.out.println(metadata.getPathLower()); 
      } 

      if (!result.getHasMore()) { 
       break; 
      } 
      result = client.files().listFolderContinue(result.getCursor()); 
     } 
    } catch (DbxException exception) { 
     System.out.println(exception.toString()); 
    } 

回答

0

默認情況下,listFolder不是遞歸的。

對於遞歸列表,您應該使用ListFolderBuilder並使用withRecursive將遞歸設置爲true

0

我得到了我需要的以下代碼。謝謝!

public void listFolderAndFiles() { 

    try { 
     ListFolderResult result = client.files().listFolderBuilder("").withIncludeDeleted(false).withRecursive(true).withIncludeMediaInfo(true) 
       .start(); 

     // while (true) { 
     List<Metadata> entries = result.getEntries(); 
     int idx = 0; 

     for (Metadata metadata : entries) { 
      if (metadata instanceof FolderMetadata) { 
       System.out.println("" + ++idx + ": FOLDER = " + metadata.getPathDisplay()); 

      } else if (metadata instanceof FileMetadata) { 
       System.out.println("" + ++idx + ": File = " + metadata.getPathDisplay()); 
      } 

      // String filePath = metadata.getPathLower().replace(metadata.getName().toLowerCase(), ""); 
      // System.out.println(metadata.getPathLower()); 
      // System.out.println("FILE PATH" + filePath); 
      // System.out.println("Dropbox" + ((FileMetadata) metadata).getRev()); 
      // System.out.println("Dropbox" + ((FileMetadata) metadata).getClientModified()); 
      // System.out.println("Dropbox" + ((FileMetadata) metadata).getMediaInfo()); 
      // System.out.println("Dropbox" + ((FileMetadata) metadata).getMediaInfo().getMetadataValue()); 
      // System.out.println("Dropbox" + ((FileMetadata) metadata).getSharingInfo()); 
     } 
     // } 

    } catch (DbxException exception) { 
     throw new BusinessException("Não foi possivel obter dados do diretório."); 
    } 

} 
0

@赫雷米亞斯的解決方案工作,但你可能allso要檢查是否有返回ListFolder掛起的更多結果。每個查詢有10,000個項目的上限。

while(true){ 

    ListFolderResult result = client.files().listFolderBuilder(path) 
     .withRecursive(true) 
     .start(); 

    List<Metadata> entries = result.getEntries(); 
    for (Metadata metadata : entries) { ... do your logic here } 

    if(result.getHasMore()){ 
     result = client.files().listFolderContinue(result.getCursor); 
    } else { 
     break; //no more entries to process 
    } 


} 

還記得做試抓。

相關問題