加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java通过http请求保存远程图片至本地

发布时间:2020-12-15 03:18:45 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.Http

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import java.io.ByteArrayOutputStream;    
import java.io.File;    
import java.io.FileOutputStream;    
import java.io.InputStream;    
import java.net.HttpURLConnection;    
import java.net.URL;    
public class ImageRequest {    
    /**  
     * @param args  
     */    
    public static void main(String[] args) throws Exception {    
        int one=1;  
        int two=1;  
        while(true){  
          
        //new一个URL对象    
        URL url = new URL("http://www.open-open.com/code/images/opencode.jpg");    
        //打开链接    
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
        //设置请求方式为"GET"    
        conn.setRequestMethod("GET");    
        //超时响应时间为5秒    
       // conn.setConnectTimeout(5 * 1000);    
        //通过输入流获取图片数据    
        InputStream inStream=null;  
        try{  
          inStream = conn.getInputStream();    
        }catch (Exception e) {  
               System.out.println("Error"+one+","+two);  
            System.out.println("///");  
            if(two==20){  
                one++;  
                two=1;  
            }else{  
                two++;  
            }  
            if(one==21){  
                return;  
            }  
            continue;  
        }  
        //得到图片的二进制数据,以二进制封装得到数据,具有通用性    
        byte[] data = readInputStream(inStream);    
        //new一个文件对象用来保存图片,默认保存当前工程根目录    
        File imageFile = new File(one+","+two+".jpg");    
        System.out.println(one+","+two);  
        //创建输出流    
        FileOutputStream outStream = new FileOutputStream(imageFile);    
        //写入数据    
        outStream.write(data);    
        //关闭输出流    
        outStream.close();    
          
        if(two==20){  
            one++;  
            two=1;  
        }else{  
            two++;  
        }  
        if(one==20){  
            return;  
        }  
          
        }  
          
    }    
    public static byte[] readInputStream(InputStream inStream) throws Exception{    
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();    
        //创建一个Buffer字符串    
        byte[] buffer = new byte[1024];    
        //每次读取的字符串长度,如果为-1,代表全部读取完毕    
        int len = 0;    
        //使用一个输入流从buffer里把数据读取出来    
        while( (len=inStream.read(buffer)) != -1 ){    
            //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度    
            outStream.write(buffer,len);    
        }    
        //关闭输入流    
        inStream.close();    
        //把outStream里的数据写入内存    
        return outStream.toByteArray();    
    }    
}    

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读