Android:既不能加载res / raw文件也不能加载资源

时间:2013-03-16 23:48:56

标签: android file assets

我尝试在android中加载.ini文件,但它不起作用。到目前为止,我尝试了以下两种方式:

从res / raw文件夹加载文件:

int fileId = context.getResources().getIdentifier(fileName, "raw", context.getPackageName());
bufferedReader = new BufferedReader(new InputStreamReader(Resources.getSystem().openRawResource(fileId)));

// I tried this too:
//context.getResources().openRawResource(fileId)));

我首先想到的是上下文可能是问题,但getIdentifier()方法返回正确的R.raw id,而在openRawResource()中,logcat总是显示:

03-17 00:17:41.627: W/ResourceType(28752): No known package when getting value for resource number 0x7f040000
03-17 00:17:41.627: W/System.err(28752): android.content.res.Resources$NotFoundException: Resource ID #0x7f040000

当我尝试从/ assets目录加载文件时:

AssetManager assetManager = context.getAssets();
bufferedReader = new BufferedReader(new InputStreamReader(assetManager.open(fileName)));

...我总是得到FileNotFoundException:

03-17 00:33:32.006: W/System.err(30447): java.io.FileNotFoundException: /file.ini: open failed: ENOENT (No such file or directory)

我希望有人可以帮我解决这个问题,我只是不知道在哪里看。我也在互联网上搜索并发现了类似的问题,但没有解决方案。

3 个答案:

答案 0 :(得分:0)

如果fileNamefile.ini,则您的getIdentifier()调用将失败,因为资源名称不包含文件扩展名。使用file(或者更好的是,完全删除getIdentifier()并使用R.raw.file)。

关于第二种方法,您的项目目录必须是assets/,而不是asset/

答案 1 :(得分:0)

仔细检查您的文件名:

1)确保它们都是小写的,并在编码中定义 2)确保yoru文件类型正确(例如.TF引用此.TFF导致此问题) 3)确保您的fileroutes是正确的。例如r.id.whatever

玩得开心:)

答案 2 :(得分:0)

好吧,现在我发现了错误。 我上面发布的代码正在工作但是之后我的程序调用了一个导致FileNotFoundException的方法(它不应该做什么)。因此,我总是查看代码的错误部分。 现在我使用该方法从/ assets目录打开文件,它的工作方式应该如此。 不过,谢谢你的帮助。