31

res/raw/ にあるすべてのファイルの名前 (文字列) が必要です

私は試した:

File f = new File("/"); 
String[] someFiles = f.list();

ルート ディレクトリは Android エミュレータのルートのようです...私のコンピュータのルート ディレクトリではありません。それは十分に理にかなっていますが、未加工のフォルダーがどこに存在するかを見つけるのには実際には役立ちません。

更新: 素晴らしい返信をありがとう。これらのいくつかは機能しているようですが、途中までしか進んでいません。おそらく、より詳細な説明が役立つでしょう

raw フォルダー内のすべての mp3 ファイルを取得して、すべての名前を取得し、それらを URI に追加して、次の方法でランダムな MP3 を再生したい...

String uriStr = "android.resource://"+ "com.example.phone"+ "/" + "raw/dennis";
Uri uri = Uri.parse(uriStr);
singletonMediaPlayer = MediaPlayer.create(c, uri);

「dennis.mp3」をアセットフォルダーに入れると、期待どおりに表示されますが、上記のコードを使用すると、次の行に沿って何かがない限り、その MP3 にアクセスできなくなります。

String uriStr = "android.assets://"+ "com.example.phone"+ "/" + "dennis";
Uri uri = Uri.parse(uriStr);
4

6 に答える 6

70

基本的に拡張子を取り除いたファイル名である未加工のアセットのすべての名前を一覧表示するには、次のようにします。

public void listRaw(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        Log.i("Raw Asset: ", fields[count].getName());
    }
}

実際のファイルは、電話に出るとファイルシステムに置かれるだけではないため、名前は関係ありません。そのリソース名に割り当てられた整数でファイルを参照する必要があります。上記の例では、この整数を次のように取得できます。

int resourceID=fields[count].getInt(fields[count]);

これは、R.raw.whateveryounamedtheresource を参照して取得する int と同じです。

于 2011-06-30T19:46:53.107 に答える
10

このコードは、sdCard の「新しい Foder」からすべてのファイルを取得します。

    File sdCardRoot = Environment.getExternalStorageDirectory();
    File yourDir = new File(sdCardRoot, "New Folder");
    for (File f : yourDir.listFiles()) {
        if (f.isFile())         
        {               
           String name = f.getName();           
           Log.i("file names", name);          

        }

     }

また、manifest.xml ファイルに Android SD カードの書き込み権限を追加してください。

于 2014-01-02T08:55:57.147 に答える
4

res / raw /内のすべてのファイルの名前(文字列)が必要です

res/raw/デバイスにファイルがありません。それらはリソースです。R.rawリフレクションを使用してクラスの静的データメンバーを反復処理し、さまざまなID名と値を取得する以外に、リソースを反復処理する良い方法はありません。

しかし、rawフォルダーがどこにあるかを見つけるのに実際には役立ちません。

フォルダとしては、開発マシンにのみ存在します。デバイス上のフォルダではありません。

于 2011-06-30T19:01:25.617 に答える
3

AssetManagerを使用できます:

私が覚えている限り、次のリストがあります(別のパスを試してください):

final String[] allFilesInPackage = getContext().getResources().getAssets().list("");
于 2011-06-30T19:06:52.770 に答える
2

http://developer.android.com/reference/android/content/res/Resources.htmlを見てください 。通常、アプリケーションに関連付けられた Resources インスタンスは getResources() で取得できます。

Resources クラスは、 http: //developer.android.com/reference/android/content/res/AssetManager.htmlへのアクセスを提供します(getAssets() メソッドを参照)。最後に、AssetManager.list() メソッドを使用して、パッケージ化された (apk) ファイルへのアクセスを取得します。楽しみ!

于 2011-06-30T19:08:03.727 に答える
1

から、次のContextように呼び出すことができます。

getResources().getAssets().list("thePath");

ドキュメントへのリンク

于 2011-06-30T19:03:19.817 に答える