2012-03-05 5 views
0

"subDir"という資産サブディレクトリに含まれるファイルをリストしたいと思います。次のコードを使用しています。ただし、dirFrom = ""(空)に設定すると、アセット内のすべてのフォルダが適切に表示されます。ただし、dirFrom = "/ subDir /"の場合は機能しません。私はすでに "subDir /"と同じ結果を試みました。マニフェストでパーミッションを宣言する必要がありますか?ありがとうございました。資産をリストするアンドロイドのサブディレクトリファイル

private void copyFiles(String dirFrom, String dirTo) throws IOException { 

    AssetManager am = getAssets(); 

    String fileList[] = am.list(dirFrom); 

     if (fileList != null) 
     { 
      for (int i = 0;i<fileList.length;i++) 
      { 
       Log.d("",fileList[i]); 
      } 
     } 

}  
+0

パスには、最後に '/ 'を付けないでください。 'subdir'だけ試しましたか? – zapl

+0

確かに、構文エラーです!ありがとう!私はコメントを検証できませんでした。回答として投稿してください – Jaume

答えて

1

AssetManager.list(String)は、「アセット内の相対パス」をとります。

Android/Javaでは、通常、パスには最後に'/'が含まれていないと予想されます。

また、「相対」は、開始時に'/'が存在しないはずであることを意味します。そうでなければ、ファイルシステムのルートにあるパスである可能性があります。

ちょうど"subDir"または"subDir/subsubDir"を使用すると効果があります。

0

zapl's答えは本当ですが、追加の情報:あなたがファイルをコピーしたい場合は、SDカードに例えば、あなたはスラッシュであなたのInputStreamを宣言する必要があります。

InputStream in = assetManager.open("subDir/"+filename); 

これは私に何かでしたサブフォルダからファイルをコピーすることによって遭遇しました。私の当初の計画は、アセットフォルダからファイルを直接コピーすることでしたが、これはうまくいったものの、IOExceptionを私に与えました。 「Webkit」、「サウンド」、「イメージ」、そしてアセットフォルダの中で覚えていないディレクトリがありましたが、私は見たことがありません。これは私が理解していないAndroidの内部でなければなりません。しかし、これを取り除くために、私はファイルをサブフォルダの中に置きました。私はそれが古いスレッドであることを知っていますが、私はこのスレッドにこの情報を入れて、同様の問題を持つ他の人を助けるだけです。

関連する問題