java - 在android中从web服务加载图像时如何处理java.io.FileNotFoundException

标签 java android filenotfoundexception universal-image-loader

我的应用程序中有 java.io.FileNotFoundException 错误问题,在我的应用程序中使用 Android-Universal-Image-Loader ,为了从 Web 服务加载图像,我知道 Filenotfound exceprion 意味着 url 无效,我需要处理这个异常,任何人都可以帮助我,如何处理这个错误。

public class TestApp extends Application {
    // private static final String TAG = TFEApplication.class.getSimpleName();

    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                getApplicationContext())
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .discCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.FIFO).build();

        // Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config);
    }
}
public class MainActivity extends Activity {
    private ImageLoader mImageLoader;
    private DisplayImageOptions mDisplayImageoptions;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mDisplayImageoptions = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_launcher).cacheInMemory(true)
                .cacheOnDisc(true).considerExifParams(true).build();
        mImageLoader = ImageLoader.getInstance();
        setContentView(R.layout.activity_main);

    }

    @Override
    protected void onStart() {

        super.onStart();

        try{
        ImageView testView =(ImageView) findViewById(R.id.imageid);
        mImageLoader.displayImage("http://examle.com",testView, mDisplayImageoptions);
        }catch(Exception execException)
        {
            System.out.println(execException.getMessage());
        }
    }

}

错误:

java.io.FileNotFoundException: http://exame.com/text.jpg
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:111)
    at com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:77)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:319)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisc(LoadAndDisplayImageTask.java:298)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:241)
    at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:141)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:841)

最佳答案

编辑

所以在查看源代码之后,看起来这是库的一个错误。在 LoadAndDisplayImageTask.java 中,tryLoadBitmap() 的第一行是 File imageFile = getImageFileInDiscCache()。这就是抛出异常的原因。 getImageFileInDiscCache() 需要干净地处理 IOException,以便在找不到缓存时可以继续执行其余操作。不幸的是,我没有看到用 .jar 覆盖它的真正简单的方法。你可以从github导入项目,自己修改。

关于java - 在android中从web服务加载图像时如何处理java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22965928/

相关文章:

java - 访问 Maven 项目中的属性文件

java - 安卓:基频

java - 如何使用apollo-android读取响应头和写入请求头

java - 为什么粗体 + 斜体不起作用?

java - 相对文件路径在 Java 中不起作用

java - Eclipse 无法定位文件 - File 对象使用上出现 FileNotFoundException

java.lang.ClassNotFoundException : org. jboss.logging.Logger 错误

Android - 旋转一个按钮并停止它

java - 动画后显示元素

android - 与元素类型 "andriod"关联的属性 "andriod:name"的前缀 "application"未绑定(bind)?