除了我尝试在res/raw
文件夹中打开文件时,我得到了。
InputStream in = Resources.getSystem().openRawResource(R.raw.eng_sample);
例外是:
android.content.res.Resources$NotFoundException: Resource ID #0X89890
我可以在eng_sample.txt
中的apk中看到文件res/raw/eng_sample.txt
。
最重要的是,当我R.raw.
并按Ctrl-space
时,文件eng_sample
会被作为建议。
那么问题是什么?我该如何解决这个问题?
提前谢谢。
P.S。
我还尝试将文件eng_sample.txt
放入main/assets
。然后使用
InputStream in = context.getAssets().open("file:///android_asset/eng_sample.txt
但现在我得到了IO异常。
也许有人可以告诉我如何使这种方法起作用而不是上面的方法?
答案 0 :(得分:1)
Resources.getSystem()
返回一个共享的全局Resources对象,该对象仅提供对系统资源的访问权限(无应用程序资源)。
同样context.getAssets().open(fileName/*not path*/)
用于从assets目录获取文件,您应该只提供fileName,而不是整个路径。
要从原始文件打开流,请使用:
context.getResources().openRawResource(R.raw.eng_sample);
答案 1 :(得分:1)
我一直在使用此代码。你可以做这样的事情
BufferedReader mReader = null;
try {
mReader = new BufferedReader(
new InputStreamReader(getAssets().open("eng_sample.txt")));
String mLine;
while ((mLine = mReader.readLine()) != null) {
//do your stuff with line
...
}
} catch (IOException e) {
//print stack trace
} finally {
if (mReader != null) {
try {
mReader.close();
} catch (IOException e) {
//print stack trace
}
}
}
希望它有所帮助。