0

我尝试在 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)

我希望有人可以帮助我解决这个问题,我只是不知道在哪里看。我也在网上搜索了类似的问题,但没有解决办法。

4

3 回答 3

0

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

关于第二种方法,您的项目目录需要是assets/,而不是asset/.

于 2013-03-16T23:51:56.133 回答
0

非常仔细地检查您的文件名:

1) 确保它们都是小写并在您的编码中定义为这样 2) 确保 yoru 文件类型正确(例如,作为 .TTF 引用的 .OTF 会导致此问题) 3) 确保您的文件路由正确。egrid.whatever

玩得开心 :)

于 2013-03-16T23:54:20.937 回答
0

好吧,现在我发现了错误。我在上面发布的代码正在运行,但在此之后我的程序立即调用了一个导致 FileNotFoundException 的方法(它不应该做的事情)。因此,我总是查看代码的错误部分。现在我使用从 /assets 目录打开文件的方法,它的工作原理应该是这样。不过,感谢您的帮助。

于 2013-03-30T14:26:44.897 回答