我需要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);
答案 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)