java实现文件下载

        可能许多朋友在编程的时候需要编写文件下载的接口来实现文件下载,这篇文章给大家提供一段经过测试并且比较实用的文件下载方法供大家学习交流。先上代码
public static void download(String httpUrl,String saveFile){  
		// 下载网络文件  
		long bytesum = 0;  
		int byteread = 0;
		long bytetotal = 0;
		FileOutputStream fs = null;
		URL url = null;  
		try {  
			url = new URL(httpUrl);  
		} catch (MalformedURLException e1) {  
			e1.printStackTrace();
		}
		try {  
			int timeout = 30;
			URLConnection conn = url.openConnection(); 
			conn.setConnectTimeout(timeout*1000);
			conn.setReadTimeout(timeout*1000);
			InputStream inStream = conn.getInputStream();  
			fs = new FileOutputStream(saveFile);  

			bytetotal = conn.getContentLength();
			byte[] buffer = new byte[1024];  

			while ((byteread = inStream.read(buffer)) != -1) {  
				bytesum += byteread;
                //这里可以计算下载的进度,根据你的需要进行操作
				fs.write(buffer, 0, byteread); 	             	               
			}  
			if(bytesum!=bytetotal){//文件不匹配时,直接返回
				//结果不匹配,按照你的需要进行操作
				//your code
			}
		} catch (FileNotFoundException e) { 
	        e.printStackTrace();
		} catch (IOException e) {  
            e.printStackTrace();
		} finally{ 
			if(fs!=null){
				try{fs.close();fs=null;}catch(Exception e){e.printStackTrace();}
			}
		}       
	}

文件下载就是将一个url所指向的文件保存到一个文件里面去,但是许多资源分为直链和外链,直链就是直接根据链接就可以下载文件,外链是通过java方法指向某个文件,再将文件以流的形式传到用户。就是说外链可能有许多其他的限制,比如身份验证什么之类的。博主给的例子只针对直链。如果大家要对外链进行下载的话,就必须生成直链再进行下载。
在这里,首先定义一个文件输出流和一个url。根据url地址创建一个url连接。当然,任何的连接都有超时时间,大家可以根据自身情况设置。然后我们可以根据链接的Contentlength获取到文件的总大小,再从连接中获得输入流。这个输入流就是我们url链接所对应文件产生的输入流,接下来就是将输入流里面的东西存储到本地文件中。
在实际操作中,下面两点大家可以结合自身情况进行使用:
1、在循环读取流的过程中我们可以间接地获取到文件下载的当前进度。
2、下载完成后可以根据读取的总大小和url链接所提供的大小进行匹配来简单地判断文件大小是否一样,从而保证文件下载的正确性。
3、对于下载中的异常,大家可以根据自身情况进行消息处理和捕获

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值