在Android中从资源文件夹中读取文件时出现问题

时间:2012-03-12 21:06:26

标签: java android readfile

这个问题与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”。

3 个答案:

答案 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) {}