我有一個顯示GIF圖像的應用程序。 這一切工作正常,如果圖像保存在繪製,我訪問它像這樣IOException - 無法加載文件
is=context.getResources().openRawResource(R.drawable.mygif);
movie = Movie.decodeStream(is);
但我需要從互聯網上下載圖像,所以我將其保存到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);
這
movie = Movie.decodeFile(new File(context.getCacheDir(), "mygif.gif").getPath());
但無論怎樣,它
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)
或
java.io.IOException: Mark has been invalidated.
at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
at android.graphics.Movie.decodeStream(Native Method)
結束,我認爲這是一個非常簡單的錯誤,但我可以沒辦法克服它。清單有:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
你應該測試下載和保存部分是否正在破壞文件。在應用程序下載文件後,您可以使用'adb pull'將其從仿真器或設備中拉出。然後你可以檢查它是否在服務器上。 –
2012-04-20 04:03:33
我把它從仿真器中拉出來,並沒有問題。圖像是13kB,如果不知何故很重要 – 2012-04-20 04:14:45
你試過嗎?Movie.decodeFile(new File(context.getCacheDir(),「mygif.gif」)。getAbsolutePath())'? – 2012-04-20 04:19:54