在android中的assets文件夹中打开一个文件

时间:2009-12-19 14:18:44

标签: android android-assets

我在assets文件夹中有一个.gif文件,比如assets / Files / android.gif。当我尝试打开文件时,它会在第二行抛出异常

AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");

所以,如果我尝试打开文本文件,尽管相同的代码有效,我是否正在尝试打开图像文件? 这可能是什么问题。

6 个答案:

答案 0 :(得分:30)

这些线条运作完美 -

InputStream assetInStream=null;

try {
    assetInStream=getAssets().open("icon.png");
    Bitmap bit=BitmapFactory.decodeStream(assetInStream);
    img.setImageBitmap(bit);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if(assetInStream!=null)
    assetInStream.close();
}

如果您的图像非常大,那么您应该在将图像解码为位图之前缩放图像。 See How to display large image efficiently

答案 1 :(得分:4)

我怀疑您收到有关未处理的异常类型IOException的投诉。如果是这种情况,则需要在try-catch块中调用mgr.open来处理检索InputStream对象时可能发生的异常。

AssetManager mngr = getAssets();
try {
    InputStream is2 = mngr.open("Files/android.gif");
} catch (final IOException e) {
    e.printStackTrace();
}

答案 2 :(得分:1)

不知道事情是否发生了变化但是我在Android 1.1中有一个应用程序打开了图标,然后在视图中显示它们,我这样做了:

BufferedInputStream buf = new BufferedInputStream(mContext.openFileInput(value));
Bitmap bitmap = BitmapFactory.decodeStream(buf);

答案 3 :(得分:1)

我认为执行此操作的首选方法是将图像放在res / drawable目录中。然后你就可以得到这样的Drawable:

Drawable d = Resources.getSystem().getDrawable(R.drawable.android);

答案 4 :(得分:0)

Mina,我遇到了同样的问题......我在“资产”中有图像和XML文件,我可以读取XML文件而不是图像。经过几个小时的挫折,我终于找到了解决方案!

我在这里发布了解决方案: Null-pointer issue displaying an image from assets folder Android 2.2 SDK

答案 5 :(得分:0)

我认为Android上不自动支持gif。尝试使用相同代码的png或jpg。