• 通过下载网址把文件存到本地


    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();
    }


    }

  • 相关阅读:
    visual studio 2013运行时卡顿 CPU占用超50%的解决方法
    altium designer中Net Label 使用说明
    机器学习中的目标函数、损失函数、代价函数
    我的Android天气app
    序列交换
    挑战多重部分和问题
    kmp算法模式串匹配
    poj3259
    poj3255
    Redis工具类 单机+集群
  • 原文地址:https://www.cnblogs.com/steven-snow/p/12869815.html
Copyright © 2020-2023  润新知