Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:既不能加载res/raw文件,也不能加载资产_Android_File_Assets - Fatal编程技术网

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

Android:既不能加载res/raw文件,也不能加载资产,android,file,assets,Android,File,Assets,我尝试在android中加载一个.ini文件,但它不起作用。到目前为止,我已经尝试了以下两种方法: 从res/raw文件夹加载文件: int fileId = context.getResources().getIdentifier(fileName, "raw", context.getPackageName()); bufferedReader = new BufferedReader(new InputStreamReader(Resources.getSystem().openRawRe

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

我希望有人能帮我解决这个问题,我只是不知道该去哪里找。我还在internet上搜索并发现了类似的问题,但没有找到解决方案。

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


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

仔细检查您的文件名:

1) 确保它们都是小写的,并在编码中定义为小写 2) 确保您的文件类型正确(例如,引用为.TTF的.OTF会导致此问题) 3) 确保您的文件路由正确。e、 g.r.id.什么都行


玩得开心:)

好了,现在我发现了错误。 我上面发布的代码可以正常工作,但紧接着我的程序调用了一个方法(它不应该这样做),导致FileNotFoundException。正因为如此,我总是看错代码的一部分。 现在,我使用从/assets目录打开文件的方法,它的工作原理应该是一样的。
尽管如此,还是要感谢您的帮助。

getIdentifier()从R.java文件返回正确的值(我仅对assets变量使用文件扩展名)。还要感谢/assets的提示(我在发布时输入了一个错误),但这似乎不是问题所在。尽管R.java中提到了该文件,但应用程序找不到该文件。不幸的是,使用R.raw.file没有帮助。文件名是小写的,并且在res/raw文件夹中。即使我跳过getIdentifier方法,只使用R.raw.file,我也会得到FileNotFoundException,就像/assets方法一样。