如何将/ res / raw文件夹中的所有文件检索为File? 我找到了this解决方案,以及"新文件夹"价值我用" res / raw"正如您在以下代码中看到的那样:
public File[] getRawFiles() {
File sdCardRoot = Environment.getExternalStorageDirectory();
File yourDir = new File(sdCardRoot, "res/raw");
return yourDir.listFiles();
}
当程序启动时,我在行return yourDir.listFiles
上得到一个例外:
Caused by: java.lang.NullPointerException: Attempt to get length of null array
我该如何解决这个问题,以及" res / raw /"的正确路径是什么? ?
答案 0 :(得分:2)
如何将/ res / raw文件夹中的所有文件检索为文件?
你不能这样做。如we discussed yesterday,资源不是设备文件系统上的文件。它们是开发计算机上的文件。它们只是设备上APK文件中的条目。
或者:
做任何你试图做的事情,不涉及文件,或
在openInputStream()
对象上使用Resources
(您可以通过Context
从任何getResources()
获取一个),并使用Java I / O复制内容资源到本地文件,例如internal storage和using reflection to iterate over the actual resources,或
切换为使用assets/
代替res/raw/
,因为AssetManager
允许您list()
资产(尽管您仍然只能使用InputStream
资产,就像资源一样,资产不是设备上的文件)