2017-02-20 83 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只是为我所用,其中我只是做只有一个文件夹列表。 因此,相应地修改。

相关问题