通过url 下载文件
1、问题简介
通过文件的url,将文件下载到本地。文件存储的位置为:tomcat服务器的文件夹(通过读取properties文件:可看:http://www.cnblogs.com/0201zcr/p/4700418.html)
2、实现思路
读取properties文件,将获得文件将要存储的位置
通过java的Url类,将网上的文件下载到本地
3、代码实现
1)、读取properties文件(这里建立的是一个web project)
package com.zcr.until; import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; public class GetFilePlace
{
/**
* 读取文件,获取保存的根目录
* @return 保存的根目录
*/
public String getFilePath(String fileProperties)
{
String dir = System.getProperty("user.dir"); //获得tomcat所在的工作路径 //获取到存储了文件存储位置的filedir.properties 文件路径
// String realDir = dir + File.separator + "src" + File.separator +"META-INF" + File.separator + "config" + File.separator + "picture.properties";
String realDir = dir.substring(0, dir.length()-4) + File.separator +"webapps" + File.separator + "appDataGenerate" +File.separator + "WEB-INF"
+ File.separator + "classes" + File.separator + "META-INF" + File.separator + "config" + File.separator + fileProperties; /* String realDir = dir.substring(0, dir.length()-4) + File.separator +"webapps" + File.separator + "appDataGenerate"
+ File.separator + "classes" + File.separator + "META-INF" + File.separator + "config" + File.separator + fileProperties;
*/
System.out.println("realDir = " + realDir);
return realDir;
} /**
* 获取filePath路径【properities文件】中key对应的值,
* @param filePath properities文件路径【包含properities文件】
* @param key 要查找的key值
* @return key对应的value
*/
public String GetValueByKey(String filePath, String key)
{
Properties pps = new Properties();
try {
InputStream in = new BufferedInputStream (new FileInputStream(filePath));
pps.load(in);
String value = pps.getProperty(key);
in.close();
return value; }catch (IOException e) {
e.printStackTrace();
return null;
}
} /**
* 查询properities文件中可以对应的存储地点
* @param key 查询主键
* @return key对应的存储地址
*/
public String getFileDirFromProperties(String key,String fileProperties)
{
return GetValueByKey(getFilePath(fileProperties),key);
} public static void main(String[] args)
{
System.out.println(new GetFilePlace().getFileDirFromProperties("brandLogo","picture.properties"));
}
}
2)、文件下载类
package com.zcr.until; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection; import javax.servlet.http.HttpServletRequest; public class URLConnectionDownloader
{
//单纯测试下载
public static void main(String[] args)
{
download("http://stocardapp.s3-external-3.amazonaws.com/ios/icons/1001tur@2x.png", "E:\\xiazai.jpg");
} /**
* 将urlString的文件下载到
* @param filePathName properties文件中的文件存储名
* @param fileProperties 查找的properties文件
* @param urlString 待下载的文件url
* @param fileName 生成的文件名称
*/
public static void downloadToSelectedFolder(String filePathName,String fileProperties,String urlString,String fileName,HttpServletRequest request)
{
//获得picture.properties 文件中,key为android_banner_url的值
String pathSavePath = new GetFilePlace().getFileDirFromProperties("android_banner_url","picture.properties"); //获得服务器(tomcat)pathSavePath的相对位置
String path = request.getSession().getServletContext().getRealPath(pathSavePath); //获得文件存储的绝对路径
String generateFileName = path + File.separator + fileName; download(urlString,generateFileName);
} /**
* 下载文件到本地
*
* @param urlString
* 被下载的文件地址
* @param filename
* 本地文件名
*/
public static void download(String urlString, String filename)
{
// 构造URL
URL url;
try
{
url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流s
OutputStream os = new FileOutputStream(filename);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3)、网页调用
URLConnectionDownloader.downloadToSelectedFolder("android_banner_url","picture.properties","http://stocardapp.s3-external-3.amazonaws.com/ios/icons/1001tur@2x.png","2x.png",request);
4)、测试结果
网页的图片:

下载的图片

致谢:感谢您的阅读!
通过url 下载文件的更多相关文章
- 从指定的URL下载文件
通过使用URLDownLoadToFile函数,我们能从指定的URL下载文件,保存到本地,并且下载的文件类型可以是可执行文件 实例如下,http://www.xuexic.com 的根目录下存在一个l ...
- QT实现,通过URL下载文件的接口实现
今天来把坑填上. 具体就是提供一个URL,并通过这个URL下载文件. MyDownloader.h: #ifndef MYDOWNLOADER_H #define MYDOWNLOADER_H cla ...
- 根据URL下载文件
commons-io 包中已经封装好了,直接可以使用 一.添加依赖 <dependency> <groupId>org.apache.commons</groupId&g ...
- wget---从指定的URL下载文件
wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器打断下 ...
- Java从指定URL下载文件并保存到指定目录
1.基本流程 当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步: (1)客户端发起一个url请求,获取连接对象. (2)服务器解析url,并且 ...
- 前端通过url下载文件方法
前端通过url下载文件方法 产生背景 浏览器通过url下载文件,当浏览器识别出资深能播放的资源文件,就不会走下载流程,会直接打开 解决方法 1.让后台转成请求的方式,输出文件流(如果想实现批量下载-因 ...
- HttpClient实现通过url下载文件
其实就是通过浏览器url,点击就会下载文件. 这里是从代码层面上,对文件进行下载. package main.java.com.abp.util; import org.apache.http.*; ...
- 根据文件url,下载文件到本地
/// <summary> /// 根据文件url,下载文件到本地 /// </summary> /// <param name="fileUrl"& ...
- JAVA 实现通过URL下载文件到本地库
/** * TODO 下载文件到本地 * @author nadim * @date Sep 11, 2015 11:45:31 AM * @param fileUrl 远程地址 * @param f ...
随机推荐
- 瞬间读懂什么是互联网思维、大数据、O2O、众筹、红海
1.什么叫大数据? 某必胜客店的电话铃响了,客服人员拿起电话. 客服:必胜客.您好,请问有什么需要我为您服务? 顾客:你好,我想要一份…… 客服:先生,烦请先把您的会员卡号告诉我. 顾客:16846 ...
- 使用<link> 标签定义浏览器标题栏小图标
使用link标签的rel属性,设置成icon.同时设置href属性值为小图标图片的url. <link rel=" icon " href="image/icon. ...
- Stickup – 轻松实现元素固定效果的 jQuery 插件
粘贴是一个简单的 jQuery 插件,在页面滚动的时候固定一个元素到浏览器窗口的顶部,让其总是保持在视图中可见.这个插件作用于多页的网站,但是对于单页的布局有额外的功能.借助 CSS,还可以实现当前视 ...
- 使用虚拟按钮(Ghost Buttons)的25个网站
2014年已经过去大半年了,我们看到网页设计领域出现新的设计趋势. 虚拟按钮(Ghost Buttons)是指具备基本的按钮形状的透明按钮,但有细实线的边框.有些虚拟钮是互动的,点击之后按钮可能会成为 ...
- 用这个插件jquery.raty.js————用于星星评价(这个案例用于后台传数据给我,前台显示星星个数)
1.引入jquery.js文件 2.引入jquery.raty.js 3.页面中放在这个:<span class="readOnly" data-path="ima ...
- 移动Web开发的bug及解决方案
我目前移动Web开发遇到的bug以及解决方案(慢慢补充当中). 1.android4.0以上一部分手机的webview中,当canvas小于屏幕大小时,绘图时会出现重影,就是说一个图只绘制了一遍,却出 ...
- swift学习笔记之-协议
//协议(Protocols) import UIKit /*协议(Protocols) 1.协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法.属性,以及其他需要的东西 2.类.结构体或枚 ...
- Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- word第一讲(0723)
工作区导航 F6键:从程序窗口中的一个任务窗格移动到另一个任务窗格.(在菜单栏.工作区.状态栏切换) alt键选中选项卡.左右键切换选项卡.下光标切换到选项卡里具体内容. 设置版面 页面布局-> ...
- Sqlite3中存储类型和数据类型结合文档解析。
sqlite3是个很小的数据库,运行在手机,机顶盒上....那它就不可能像musql,sqlserver那么规范,有很多的数据类型,之前我也以为它定义了很多数据类型,其实不是他就5个存储类,那么多数据 ...