我尝试在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)
我希望有人可以帮我解决这个问题,我只是不知道在哪里看。我也在互联网上搜索并发现了类似的问题,但没有解决方案。
答案 0 :(得分:0)
如果fileName
为file.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目录打开文件,它的工作方式应该如此。 不过,谢谢你的帮助。