android用http下载图片

来源:互联网 发布:常用算法面试题 编辑:程序博客网 时间:2024/05/16 01:32

最近在做云相册,还在做模块封装,现在先将http下载图片贴出来:

package com.yuyan.http;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import com.yuyan.cache.MyDiskCache;import com.yuyan.global.IDownloadListener;import com.yuyan.utils.MyUtils;/*** @ClassName: HttpDownload * @Description: http下载照片工具类* @author yan.yu * @date 2013-6-17 下午6:04:05 * */public enum MyHttpDownload {INSTANCE;/*下载监听器*/private static IDownloadListener listener = null;public static final int IO_BUFFER_SIZE = 8 * 1024;public static MyHttpDownload newInstance(IDownloadListener downLoadListener){listener = downLoadListener;return INSTANCE;}public static MyHttpDownload newInstance(){return INSTANCE;}/*** @Description: http从服务器上下载图片* @param @param urlString* @param @return* @param @throws IOException   * @return File * @throws */public File downloadBitmap(String urlString) throws IOException {/*获取本地缓存对象*/final MyDiskCache cache = MyDiskCache.openCache();final File cacheFile = new File(cache.createFilePath(urlString));if (cache.containsKey(urlString)) {/*如果本地缓存中存在该图片就直接返回本地图片*/return cacheFile;}MyUtils.disableConnectionReuseIfNecessary();HttpURLConnection urlConnection = null;BufferedOutputStream out = null;try {final URL url = new URL(urlString);urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setReadTimeout(10 * 1000);urlConnection.setConnectTimeout(5 * 1000);/*直接上传,禁止写入缓存*/urlConnection.setUseCaches(false);final InputStream in = new BufferedInputStream(urlConnection.getInputStream(), IO_BUFFER_SIZE);out = new BufferedOutputStream(new FileOutputStream(cacheFile),IO_BUFFER_SIZE);int b;if(listener != null)listener.onStart();while ((b = in.read()) != -1) {out.write(b);if(listener != null)listener.onProgress(b);}cacheFile.setLastModified(System.currentTimeMillis());if(listener != null)listener.onFinish(cacheFile);} catch (IOException e) {if(listener != null)listener.onError();throw e;} finally {if (urlConnection != null) {urlConnection.disconnect();}if (out != null) {out.flush();out.close();}}return cacheFile;}}