相关疑难解决方法(0)

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

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

AssetManager mngr=getAssets();
InputStream is2=mngr.open("Files/android.gif");
Run Code Online (Sandbox Code Playgroud)

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

android android-assets

16
推荐指数
1
解决办法
6万
查看次数

读取AssetFileDescriptor时出现IOException

我正在尝试/assets使用以下代码从Android 文件夹中读取位图:

AssetFileDescriptor fd = getAssets().openFd("pic1.jpg")
Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());
Run Code Online (Sandbox Code Playgroud)

我得到的例外情况表明文件权限错误:

java.io.IOException: read failed: EBADF (Bad file number)
    at libcore.io.IoBridge.read(IoBridge.java:432)
    at java.io.FileInputStream.read(FileInputStream.java:179)
    at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:168)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:309)
    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
    at android.graphics.BitmapFactory.decodeFileDescriptor(BitmapFactory.java:670)
    at android.graphics.BitmapFactory.decodeFileDescriptor(BitmapFactory.java:688)
Run Code Online (Sandbox Code Playgroud)

尝试从输入流中读取它会产生类似的异常:

AssetFileDescriptor fd = getAssets().openFd("pic1.jpg");
FileInputStream is = fd.createInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)

例外:

java.io.IOException: lseek failed: EBADF (Bad file number)
Stack trace:
  at java.io.FileInputStream.skip(FileInputStream.java:197)
  at android.content.res.AssetFileDescriptor$AutoCloseInputStream.<init>(AssetFileDescriptor.java:173)
  at android.content.res.AssetFileDescriptor.createInputStream(AssetFileDescriptor.java:138)
Run Code Online (Sandbox Code Playgroud)

直接从输入流中读取会产生另一个例外:

InputStream is = getAssets().open("pic1.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)

例外:

java.lang.NullPointerException: asset
  at android.content.res.AssetManager.seekAsset(Native …
Run Code Online (Sandbox Code Playgroud)

android android-assets android-resources

2
推荐指数
1
解决办法
4425
查看次数