zoukankan      html  css  js  c++  java
  • 通过下载网址把文件存到本地

    package Httpclient_test.Httpclient_test;
    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    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 java.net.URLEncoder;
    import java.util.Map;

    public class DownLoadFrom {
    /**
    * 从网络Url中下载文件
    * @param urlStr
    * @param fileName
    * @param savePath
    * @throws IOException
    */
    public static void g_downLoadFromUrl(String urlStr,Map<String ,String>headers,String fileName,String savePath) throws IOException{
    URL url = new URL(urlStr);
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    //设置超时间为3秒
    conn.setConnectTimeout(3*1000);
    conn.setRequestMethod("GET");
    //防止屏蔽程序抓取而返回403错误
    for (String header : headers.keySet()) {
    conn.setRequestProperty(header, headers.get(header));
    }

    //得到输入流
    InputStream inputStream = conn.getInputStream();
    //获取自己数组
    byte[] getData = readInputStream(inputStream);

    //文件保存位置
    File saveDir = new File(savePath);
    if(!saveDir.exists()){
    saveDir.mkdir();
    }
    File file = new File(saveDir+File.separator+fileName);
    FileOutputStream fos = new FileOutputStream(file);
    fos.write(getData);
    if(fos!=null){
    fos.close();
    }
    if(inputStream!=null){
    inputStream.close();
    }
    System.out.println("info:"+url+" download success");

    }
    /**
    * 从网络Url中下载文件
    * @param urlStr
    * @param fileName
    * @param savePath
    * @throws IOException
    */
    public static void p_downLoadFromUrl(String urlStr,Map<String ,String>headers,Map<String ,String>params,String fileName,String savePath) throws IOException{
    URL url = new URL(urlStr);
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
    //设置超时间为3秒
    conn.setConnectTimeout(3*1000);
    //输入参数
    conn.setDoOutput(true);
    //不使用缓存
    conn.setUseCaches(false);
    //防止屏蔽程序抓取而返回403错误
    for (String header : headers.keySet()) {
    conn.setRequestProperty(header, headers.get(header));
    }
    conn.setRequestMethod("POST");
    if(params!=null && params.keySet().size()>0) {
    StringBuilder sb=new StringBuilder();
    for (String key : params.keySet()) {
    sb.append(key+"="+URLEncoder.encode(params.get(key),"utf-8")+"&");
    }
    String param=sb.delete(sb.length()-1, sb.length()).toString();
    //System.err.println(param);
    DataOutputStream out=new DataOutputStream(conn.getOutputStream());
    out.writeBytes(param);
    out.flush();
    out.close();
    }
    //得到输入流
    InputStream inputStream = conn.getInputStream();
    //获取自己数组
    byte[] getData = readInputStream(inputStream);

    //文件保存位置
    File saveDir = new File(savePath);
    if(!saveDir.exists()){
    saveDir.mkdir();
    }
    File file = new File(saveDir+File.separator+fileName);
    FileOutputStream fos = new FileOutputStream(file);
    fos.write(getData);
    if(fos!=null){
    fos.close();
    }
    if(inputStream!=null){
    inputStream.close();
    }
    System.out.println("info:"+url+" download success");

    }
    /**
    * 从输入流中获取字节数组
    * @param inputStream
    * @return
    * @throws IOException
    */
    public static byte[] readInputStream(InputStream inputStream) throws IOException {
    byte[] buffer = new byte[1024];
    int len = 0;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    while((len = inputStream.read(buffer)) != -1) {
    bos.write(buffer, 0, len);
    }
    bos.close();
    return bos.toByteArray();
    }


    }

  • 相关阅读:
    [声明]博主退役了
    galgame(s?)
    atcoder grand contest 040 F Two Pieces
    AtCoder Grand Contest 040 E
    【AtCoder】CODE FESTIVAL 2016 qual C E-順列辞書 / Encyclopedia of Permutations
    GMOJ6282 向量
    [GMOJ6281] 串
    GMOJ 5909 跑商
    2019.10.28 GMOJ 6394 燃烧的火焰
    题解 CF1092B 【Teams Forming】
  • 原文地址:https://www.cnblogs.com/steven-snow/p/12869815.html
Copyright © 2011-2022 走看看