2017-02-20 16 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'に移動できます。 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のは、ちょうど私の使用のためのものです。 それに応じて変更してください。

関連する問題