C# 文件下载类
- using System;
- using System.Net;
- using System.IO;
- using System.Text;
- using System.Web;
- using System.Windows.Forms;
- namespace test
- {
- /// <summary>
- /// httpDownLoad
- /// </summary>
- public class HttpDownLoad
- {
- private long fileLength;
- private long downLength;//已经下载文件大小,外面想用就改成公共属性
- private static bool stopDown;
- public HttpDownLoad()
- {
- fileLength = ;
- downLength = ;
- stopDown = false;
- //
- // TODO: 在此处添加构造函数逻辑
- //
- }
- /// <summary>
- /// 文件下载
- /// </summary>
- /// <param name="url">连接</param>
- /// <param name="fileName">本地保存文件名</param>
- /// <param name="progressBar">进度条</param>
- public void httpDownFile(string url, string fileName, System.Windows.Forms.ProgressBar progressBar)
- {
- Label lable = new Label();
- httpDownFile(url, fileName, progressBar, lable);
- lable.Dispose();
- }
- /// <summary>
- /// 文件下载
- /// </summary>
- /// <param name="url">连接</param>
- /// <param name="fileName">本地保存文件名</param>
- /// <param name="progressBar">进度条</param>
- /// <param name="label">返回已经下载的百分比</param>
- public void httpDownFile(string url, string fileName, System.Windows.Forms.ProgressBar progressBar, Label label)
- {
- stopDown = false;
- Stream str = null, fs = null;
- try
- {
- //获取下载文件长度
- fileLength = getDownLength(url);
- downLength = ;
- if (fileLength > )
- {
- WebClient DownFile = new WebClient();
- str = DownFile.OpenRead(url);
- //判断并建立文件
- if (createFile(fileName))
- {
- byte[] mbyte = new byte[];
- int readL = str.Read(mbyte, , );
- fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
- //读取流
- while (readL != )
- {
- if (stopDown)
- break;
- downLength += readL;//已经下载大小
- fs.Write(mbyte, , readL);//写文件
- readL = str.Read(mbyte, , );//读流
- progressBar.Value = (int)(downLength * / fileLength);
- label.Text = progressBar.Value.ToString() + "%";
- System.Windows.Forms.Application.DoEvents();
- }
- str.Close();
- fs.Close();
- }
- }
- }
- catch (Exception ex)
- {
- if (str != null)
- str.Close();
- if (fs != null)
- fs.Close();
- MessageBox.Show(ex.Message);
- }
- }
- /// <summary>
- /// 文件下载
- /// </summary>
- /// <param name="url">连接</param>
- /// <param name="fileName">本地保存文件名</param>
- public void httpDownFile(string url, string fileName)
- {
- try
- {
- WebClient DownFile = new WebClient();
- DownFile.DownloadFile(url, fileName);
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- /// <summary>
- /// 获取下载文件大小
- /// </summary>
- /// <param name="url">连接</param>
- /// <returns>文件长度</returns>
- private long getDownLength(string url)
- {
- try
- {
- WebRequest wrq = WebRequest.Create(url);
- WebResponse wrp = (WebResponse)wrq.GetResponse();
- wrp.Close();
- return wrp.ContentLength;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- return ;
- }
- }
- /// <summary>
- /// 建立文件(文件如已经存在,删除重建)
- /// </summary>
- /// <param name="fileName">文件全名(包括保存目录)</param>
- /// <returns></returns>
- private bool createFile(string fileName)
- {
- try
- {
- if (File.Exists(fileName))
- {
- File.Delete(fileName);
- }
- Stream s = File.Create(fileName);
- s.Close();
- return true;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- return false;
- }
- }
- public void downClose()
- {
- stopDown = true;
- }
- }
- }
=====================================================================
调用
=====================================================================
HttpDownLoad ht = new HttpDownLoad();
ht.httpDownFile("http://img.baidu.com/img/post-jg.gif", "post-jg.gif", this.progressBar1);
C# 文件下载类的更多相关文章
- php 支持断点续传的文件下载类
php 支持断点续传的文件下载类 分类: php class2013-06-30 17:27 17748人阅读 评论(6) 收藏 举报 php断点续传下载http测试 php 支持断点续传,主要依靠H ...
- [上传下载] C#FileDown文件下载类 (转载)
点击下载 FileDown.zip 主要功能如下 .参数为虚拟路径 .获取物理地址 .普通下载 .分块下载 .输出硬盘文件,提供下载 支持大文件.续传.速度限制.资源占用小 看下面代码吧 /// &l ...
- PHP基础文件下载类的简单封装
1: <?php 2: /** 3: * [FileDown 公用文件下载方法] 4: * @param [type] $filePath [文件路径(绝对路径或相对路径)] 5: */ 6: ...
- PowerShell实现文件下载(类wget)
对Linux熟悉的读者可能会对Linux通过wget下载文件有印象,这个工具功能很强大,在.NET环境下提到下载文件大多数人熟悉的是通过System.Net.WebClient进行下载,这个程序集能实 ...
- php实现的支持断点续传的文件下载类
通常来说,php支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理: Http头 Range.Content-Range()HTTP头中一般断点下载时 ...
- 封装qt http文件下载类
#include <QApplication> #include <QtWidgets> #include <QtNetwork> //downloads one ...
- Android 实现网络多线程APK文件下载
(转自:http://blog.csdn.net/mad1989/article/details/38421465) 实现原理 (1)首先获得下载文件的长度,然后设置本地文件的长度. (2)根据文件长 ...
- android下载简单工具类
功能是实现下载文件,图片或MP3等,为了简单起见使用单线程,此代码为MarsAndroid教程的复制品,放在此处,留着参考. 首先是一个得到字节流随后保存到内存卡上的工具类: package com. ...
- Android实现网络多线程文件下载
实现原理 (1)首先获得下载文件的长度,然后设置本地文件的长度. (2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置. 如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M ...
随机推荐
- C# - Abstract Classes
Abstract classes are closely related to interfaces. They are classes that cannot be instantiated, ...
- 左右TS分析流
字节.在TS流里能够填入非常多类型的数据.如视频.音频.自己定义信息等.他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不一定都是有效数据.有一些可能为填充数据). 工作形式: 由于 ...
- (插播)unity的 异常捕捉和 ios Android 崩溃信息的捕捉。
近期 做些准备性得工作和有意思的事情.所以近期做了一个适合ios和android 错误信息捕捉的unity插件. 两个功能,app崩溃也就是闪退 是开发人员 非常头疼的一件事,还有就是一些莫名得错误 ...
- Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释
概况 Android在4.3的版本号中(即API 18)增加了NotificationListenerService,依据SDK的描写叙述(AndroidDeveloper)能够知道,当系统收到新的通 ...
- java.util.Timer demo good
package timer; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org ...
- CodeForces 28D Don't fear, DravDe is kind dp
主题链接:点击打开链接 为了让球队后,删除是合法的.也就是说,对于每一个车辆, l+r+c 一样,按l+r+c分类. 然后dp一下. #include <cstdio> #include ...
- 讨论oracle在rowid和rownum
[ 概要 ] 刚刚接触oracle的同学可能经常会被rowid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有非常大的帮助, 以下偶就抛砖引玉, 简单地谈谈他们之间的差别吧. [ 比 ...
- TreeMap cannot be cast to java.lang.Comparable
/** * Constructs a new, empty tree map, using the natural ordering of its * keys. All keys inserted ...
- Git & Github 一页简明笔记(转)main
由于小组工程需要使用git&github的版本控制来协作,但我对其使用并不熟悉,特此写篇一页的笔记放在手边,备随时查阅. 使用方法:常用命令供随时查阅,其余内容供新手了解. 0. 常用命令一览 ...
- Javascript学习5 - 函数
原文:Javascript学习5 - 函数 在Javascript中,函数和对象是交织在一起的.有些函数的特性与对象相关联.这一点的内容在第六部分会讨论到. 这一部分主要讨论函数与其它比较熟悉的语言( ...