android - 从/ res / raw文件夹中检索文件类型的所有文件

时间:2016-04-24 11:37:29

标签: java android

如何将/ 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 /"的正确路径是什么? ?

1 个答案:

答案 0 :(得分:2)

  

如何将/ res / raw文件夹中的所有文件检索为文件?

你不能这样做。如we discussed yesterday,资源不是设备文件系统上的文件。它们是开发计算机上的文件。它们只是设备上APK文件中的条目。

或者:

  • 做任何你试图做的事情,不涉及文件,或

  • openInputStream()对象上使用Resources(您可以通过Context从任何getResources()获取一个),并使用Java I / O复制内容资源到本地文件,例如internal storageusing reflection to iterate over the actual resources,或

  • 切换为使用assets/代替res/raw/,因为AssetManager允许您list()资产(尽管您仍然只能使用InputStream资产,就像资源一样,资产不是设备上的文件)