Boj*_*goj 6 file-io android ioexception
我有一个显示GIF图像的应用程序.如果图像保存在drawable中,一切正常,我就像这样访问它
is=context.getResources().openRawResource(R.drawable.mygif);
movie = Movie.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)
但我需要从互联网上下载图像,所以我将它保存到CacheDir,这很好.我尝试了下面的内容来阅读它.
try
{
is = new BufferedInputStream(new FileInputStream(new File(context.getCacheDir(), "mygif.gif")));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
movie = Movie.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)
还有这个
movie = Movie.decodeFile(new File(context.getCacheDir(), "mygif.gif").getPath());
Run Code Online (Sandbox Code Playgroud)
但无论如何,它都以
java.io.IOException
at java.io.InputStream.reset(InputStream.java:218)
at android.graphics.Movie.decodeStream(Native Method)
at android.graphics.Movie.decodeTempStream(Movie.java:74)
at android.graphics.Movie.decodeFile(Movie.java:59)
Run Code Online (Sandbox Code Playgroud)
要么
java.io.IOException: Mark has been invalidated.
at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
at android.graphics.Movie.decodeStream(Native Method)
Run Code Online (Sandbox Code Playgroud)
我认为这是一个非常简单的错误,但我无法克服它.清单有:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)
idi*_*ger 14
建议:
1.try将下载位置移动到另一个文件夹,如:sdcard,或app除另外的文件夹cache.
2.初始化时inputstream,尝试使用:init,缓冲区大小
int buffersize = 16*1024;
InputStream is = new BufferedInputStream(xxx,buffersize);
Run Code Online (Sandbox Code Playgroud)
3.检查文件夹中存在的文件
更新:改变这样的代码,不要使用 Movie.decodeFile
InputStream is = null;
try {
is = new BufferedInputStream(new FileInputStream(new File(getCacheDir(), "mygif.gif")), 16 * 1024);
is.mark(16 * 1024);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
movie = Movie.decodeStream(is);
Run Code Online (Sandbox Code Playgroud)
没有异常抛出,并且movie不是null.
此外,虽然您的代码将抛出异常,但movie也不是null.
| 归档时间: |
|
| 查看次数: |
4921 次 |
| 最近记录: |