java从网络下载资源到本地

硅谷探秘者 582 0 0

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;

public class Test {
	public static void main(String[] args) {
		System.out.println(downloadFile("http://photo.jiajiajia.club/lin.jpg"));
	}
	
	public static String downloadFile(String remoteUrl) {
	    try {
	        URL url = new URL(remoteUrl);
	        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
	        //设置超时间为3秒
	        conn.setConnectTimeout(3 * 1000);
	        //防止屏蔽程序抓取而返回403错误
	        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

	        //文件保存位置.保存在系统临时目录
	        String folder = "D:/test/test/";
	        File dir = new File(folder);
	        if (!dir.exists()) {
	            dir.mkdirs();
	        }
	        String fileName = getFileName(url.getPath());
	        File localFile = new File(dir, fileName);
	        try (
	                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(localFile));
	                BufferedInputStream bis = new BufferedInputStream(conn.getInputStream())
	        ) {
	            int len = 1024;
	            byte[] b = new byte[len];
	            while ((len = bis.read(b)) != -1) {
	                bos.write(b, 0, len);
	            }
	            bos.flush();
	            bis.close();
	            conn.disconnect();
	        } catch (IOException e) {
	        	e.printStackTrace();
	        }
	        return localFile.getCanonicalPath();
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	    return null;
	}

	private static String getFileName(String remoteUrl) {
	    String decode = null;
	    try {
	        decode = URLDecoder.decode(remoteUrl, "UTF-8");
	    } catch (UnsupportedEncodingException e) {
	        e.printStackTrace();
	    }
	    File file = new File(decode);
	    return file.getName();
	}
}


猜你喜欢
计算机网络基础 258 (BitPerSecond),比特率越高,单位时间内传输的数据越多。上行带宽即上行速率一般是指你的电脑上传的速度,别人你的电脑进行通讯的速率。行带宽即行速率是指向用户电脑发送信息时的传输速率,文件,
java基础 1154 java(socket)中传输序列化对象Person类,注意(两个项目中的Person类字节码要相同)packagesocket;importjava.io.Serializable
框架 6459 多么痛的领悟~分离打包后运行项目,启动失败数据初始化失败~检查问题,这种情况没有打印错误日志,首先配置一日志,将错误报告在控制台中打印出来。resources文件夹创建一个
其他 329 址:Windows7SP1旗舰版(64位)文件名:cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.isoSHA1
其他 165 上一篇:eclipse中使用Git管理项目工程代码(2)eclipse将项目工程推送远程库(github)eclipse将远程库的工程克隆右键空白-》import将远程项目工程拉取仓库完成一篇:eclipse中使用git完成使用GitFlow工作流分支
linux系统 1112 方案一:一般配置如果以html,htm,gif,jpg,jpeg,bmp,png,ico,txt,js,css结尾的,均由nginx处理,否则转发相应的服务即可server{listen80
算法基础 5 1.质不同带宽速度(Mbit/s)是一个速度单位,表示的是在上比特流(bit)在上传输的速度。一比特就是一个二进制位。而我们认为的实际速度(M/s)代表的是每秒的数据占用了多少内存
工具 739 什么是jwt?java代码测试什么是jwt?Jsonwebtoken(JWT)是为了应用环境间传递声明而执行的一种基于JSON的开发标准(RFC7519),该token被设计为紧凑且安全的,特别
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  4
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git undefined undefined sdf sdf dsdf sdfasdfasd sdf ppp sdf fggdgsd kkk kkk kkk sdddf 456
目录