Android,如何获取文件夹中所有文件的列表?

时间:2011-06-30 18:57:05

标签: android android-file

我需要res / raw /

中所有文件的名称(String)

我试过了:

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

看起来根目录是android模拟器的根目录...而不是我的计算机根目录。这有足够的意义,但并没有真正帮助我找出原始文件夹的存在位置。

更新:感谢所有精彩回复。似乎其中一些是有效的,但只让我走了一半。也许更详细的描述将有助于

我想获取原始文件夹中的所有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);

6 个答案:

答案 0 :(得分:57)

要列出原始资产的所有名称(基本上是剥离了扩展名的文件名),您可以执行以下操作:

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

答案 1 :(得分:6)

此代码将从sdCard上的“新建文件夹”中检索所有文件。

    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卡写入权限

答案 2 :(得分:3)

  

我需要res / raw /

中所有文件的名称(String)

设备上的res/raw/中没有文件。这些都是资源。除了使用反射迭代R.raw类的静态数据成员以获取各种ID名称和值之外,没有好的方法来迭代资源。

  

但并没有真正帮助我找出原始文件夹的位置。

作为文件夹,它仅存在于您的开发计算机上。它不是设备上的文件夹。

答案 3 :(得分:1)

您可以使用AssetManager

据我所知,你将有一个列表(只是尝试不同的路径):

final String[] allFilesInPackage = getContext().getResources().getAssets().list("");

答案 4 :(得分:1)

看看http://developer.android.com/reference/android/content/res/Resources.html 您通常可以使用getResources()获取与您的应用程序关联的Resources实例。

Resources类提供对http://developer.android.com/reference/android/content/res/AssetManager.html的访问(参见getAssets()方法)。 最后使用AssetManager.list()方法获取对打包(apk)文件的访问权限。 享受!

答案 5 :(得分:0)

Context,你可以这样打电话:

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

link to documentation