本文主要是介绍文件下载显示进度条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文件下载网络上下载资源,当文件比较小的时候,没有显示进度,可能看不出来什么,但当文件内容比较大,显示出进度条,这样就更加贴切的让用户感到文件下载的状况。
现在先做一个小例子,主要是现在控制台输出文件下载的进度。
package com.tgb.demo;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;/*** Created by zss on 2017/3/5.*/
public class download {public static void dowanload(String url, String path)throws IOException {System.out.println("下载中...");InputStream inputStream = null;RandomAccessFile randomAccessFile = null;try {HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();urlConnection.setRequestMethod("GET");urlConnection.setConnectTimeout(10 * 1000);File file = new File(path);//文件夹是否存在if (!file.getParentFile().exists())file.getParentFile().mkdir();if (file.exists())file.delete();file.createNewFile();int responseCode = urlConnection.getResponseCode();if (responseCode >= 200 && responseCode < 300) {inputStream = urlConnection.getInputStream();int len = 0;byte[] data = new byte[4096];//用于保存当前进度(具体进度)int progres = 0;//获取文件长度int maxProgres = urlConnection.getContentLength();randomAccessFile = new RandomAccessFile(file, "rwd");//设置文件大小randomAccessFile.setLength(maxProgres);//将文件大小分成100分,每一分的大小为unitint unit = maxProgres / 100;//用于保存当前进度(1~100%)int unitProgress = 0;while (-1 != (len = inputStream.read(data))) {randomAccessFile.write(data, 0, len);progres += len;//保存当前具体进度int temp = progres / unit; //计算当前百分比进度if (temp >= 1 && temp > unitProgress) {//如果下载过程出现百分比变化unitProgress = temp;//保存当前百分比System.out.println("正在下载中..." + unitProgress + "%");}}inputStream.close();System.out.println("下载完成...");} else {System.out.println("服务器异常...");}} finally {if (null != inputStream) {inputStream.close();}if (null != randomAccessFile) {randomAccessFile.close();}}}public static void main(String[] args) throws IOException {String path = "D:\\abc\\image.jpg";String url="http://www.dowei.com/d/file/tuku/meinv/2016-01-26/1453788622507000.jpg";dowanload(url, path);}
}
下面是显示的效果:
如果想把这个效果做到前端,还需要前台js的控制,这个最近正在研究,应该会很简单,做好之后再添加到这篇博客中,咱们共同分享。
这篇关于文件下载显示进度条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!