这个问题与this one有关。由于这是一个具体的问题,我在这里单独提出了这个问题。我尝试创建一个文本文件“foo.txt”,将其读入我的Activity中:
File file = new File("/assets/foo.txt");
if ( file.exists() ){
txtView.setText("Exists");
}
else{
txtView.setText("Does not exist");
}
“foo.txt”文件位于我的资源文件夹中,我已经确认它存在于操作系统中。我的TextView始终从上面的代码中获取文本“不存在”。我试过去
File file = new File("/assets/foo.txt");
Scanner in = new Scanner(file);
,但这会产生以下内联错误:“未处理的异常类型FileNotFoundException”。 Eclipse然后建议涉及try / catch,它会删除错误,但它不能正常工作。
我也尝试将我的资源文件夹设置为“用作源文件夹”,但这没有任何区别。我也尝试使用原始文件夹,因为有几个人建议没用。我没有选择,真的需要帮助。应该很容易......
另一种尝试是去
AssetManager assetManager = getResources().getAssets();
InputStream is = assetManager.open("assets/foo.txt");
但是这会在第二行产生内联错误:“未处理的异常类型IOException”。
答案 0 :(得分:13)
在那种情况下,我在CommonsWare(这是安全方:)),但它应该是:
AssetManager assetManager = getResources().getAssets();
InputStream inputStream = null;
try {
inputStream = assetManager.open("foo.txt");
if ( inputStream != null)
Log.d(TAG, "It worked!");
} catch (IOException e) {
e.printStackTrace();
}
请勿使用InputStream is = assetManager.open("assets/foo.txt");
答案 1 :(得分:2)
您不能在运行时使用assets/
访问File
。您可以使用assets/
在运行时访问AssetManager
,您可以通过getResources().getAssets()
获取。{/ p>
答案 2 :(得分:2)
试试这个:
private AssetManager am;
am=getAssets();
InputStream inputStream = null ;
try
{
inputStream = am.open("read.txt");
}
catch (IOException e) {}