给定一个图片url 把该图片下载到手机sdcard

下载图片是我们经常会做的操作,给定一个图片的url,下载改图片到手机sdcard的方法,代码如下:

public void saveImages(String imageViewsUrl){
         InputStream is = null;                      //定义一个输入流。  
         BufferedInputStream bis = null;             //定义一个带缓冲的输入流 。   
         try{   
           URL url = new URL(imageViewsUrl);         //创建一个URL对象。  
           is = url.openStream();                    //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。  
           bis = new BufferedInputStream(is);        
         }catch(Exception e){       
             System.out.println(e.toString());  
//             mHandler.sendEmptyMessage(5);         //下载图片失败
         }     
       //在sdcar中创建储存图片的文件
         midr = Environment.getExternalStorageDirectory()+ "/saveImage";
     	 File fird = new File(midr); 
     	 if(!fird.exists()){
     		 fird.mkdirs();                       //sdcard中没有该创建新文件夹
     	 }

     	//考虑文件重名问题,获取系统时间命名图片文件
     	 dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
     	 String systemTime = dateFormat.format(new java.util.Date());
     	 path = Environment.getExternalStorageDirectory()+ "/saveImage/" + "wx"+"_"+systemTime+".jpg";
         //写到本地   
         BufferedOutputStream bos = null;           //定义一个带缓冲的输出流。  
         File file = new File(path);    
         try{       
             bos = new BufferedOutputStream(new FileOutputStream(file));  
             int len = 0;
             byte[] b = new byte[1024];             //创建字节数组。   
             while((len = bis.read(b))>0){
            	 bos.write(b,0,len);
             }    
		scanFileAsync(mContext, path);     //扫扫描指定文件	当图片下载到sdcard后,我们打开手机相册是看不到下载的图片,需要扫描图片文件指定的目录后才可以看到	
		scanDirAsync(mContext,path);       //扫描指定路径       mContext是上下文  path 是下载到sdcard的图片地址
         }catch(Exception   e){       
        	 System.out.println("++++++++++++++++++"+e.toString());  
//        	 mHandler.sendEmptyMessage(5);   //下载图片失败
         }finally{       
             try{       
                 bos.flush();                 //刷新此缓冲的输出流。   
                 bis.close();                 //关闭此输入流 。   
             }catch(Exception   e){       
            	System.out.println("++++++++++++++++++"+e.toString());         
             }       
         } 
	 }


    //扫描指定文件
     public void scanFileAsync(Context ctx, String filePath) {
         Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
         scanIntent.setData(Uri.fromFile(new File(filePath)));
         ctx.sendBroadcast(scanIntent);
     }     
     //扫描指定目录
     public static final String ACTION_MEDIA_SCANNER_SCAN_DIR = "android.intent.action.MEDIA_SCANNER_SCAN_DIR";
     public void scanDirAsync(Context ctx, String dir) {
            Intent scanIntent = new Intent(ACTION_MEDIA_SCANNER_SCAN_DIR);
            scanIntent.setData(Uri.fromFile(new File(dir)));
            ctx.sendBroadcast(scanIntent);
     }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值