2017-02-20 86 views
1

如何在DropBox文件夾中列出所有文件,遞歸地? 我嘗試下面的代碼,但不返回結果:在Android Dropbox API中遞歸列出所有文件

result = dbxClient.files().search("", "*"); 

而這個返回路徑的文件,而不是子文件夾:

result = dbxClient.files().listFolder(path); 
+0

注意,['search'](https://dropbox.github.io/dropbox-sdk-java/api-docs/v2.1.x/com/dropbox/core/v2/files/DbxUserFilesRequests。 html#search-java.lang.String-java.lang.String-)不支持這樣的「*」通配符。不管怎樣,你應該使用列表文件夾功能。 – Greg

回答

1

您可以選中此鏈接,導航到內部類'FolderScanTask'。它包含Android的工作代碼: https://github.com/ControlX/Android-Dropbox-UploadImage-To-SpecificFolder-By-FolderSelection/blob/master/app/src/main/java/io/github/controlx/dbxdemo/MainActivity.java

這是工作正在進行中,在這裏我只是爲父文件夾做一個ArrayList,有更多的邏輯建議由Greg已經在那裏,你只需要填寫它。

代碼片段是相同的:

 String path = ""; 
     DbxClientV2 dbxClient = DropboxClient.getClient(ACCESS_TOKEN); 
     TreeMap<String, Metadata> children = new TreeMap<String, Metadata>(); 

     try { 
      try { 
       result = dbxClient.files() 
         .listFolder(path); 
      } catch (ListFolderErrorException ex) { 
       ex.printStackTrace(); 
      } 

      List<Metadata> list = result.getEntries(); 
      cs = new CharSequence[list.size()]; 
      arrayList = new ArrayList<>(); 
      arrayList.add("/"); 
      while (true) { 
       int i = 0; 
       for (Metadata md : result.getEntries()) { 
        if (md instanceof DeletedMetadata) { 
         children.remove(md.getPathLower()); 
        } else { 
         String fileOrFolder = md.getPathLower(); 
         children.put(fileOrFolder, md); 
         if(!fileOrFolder.contains(".")) 
          arrayList.add(fileOrFolder); 
        } 
        i++; 
       } 

       if (!result.getHasMore()) break; 

       try { 
        result = dbxClient.files() 
          .listFolderContinue(result.getCursor()); 
       } catch (ListFolderContinueErrorException ex) { 
        ex.printStackTrace(); 
       } 
      } 
     } catch (DbxException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

這裏的ArrayList只是爲我所用,其中我只是做只有一個文件夾列表。 因此,相應地修改。

相關問題