using System; 
 using System.Drawing; 
 using System.Collections; 
 using System.ComponentModel; 
 using System.Windows.Forms; 
 using System.Data; 
 using ; 
 using System.IO; 
 using System.Threading; 
    
 namespace MyGetCar 
 { 
  /// 
  /// Form1 的摘要说明。 
  /// 
  public class Form1 : System.Windows.Forms.Form 
  { 
   private System.Windows.Forms.Label label1; 
   private System.Windows.Forms.Label label2; 
   private System.Windows.Forms.TextBox srcAddress; 
   private System.Windows.Forms.TextBox tarAddress; 
   private System.Windows.Forms.StatusBar statusBar; 
   private System.Windows.Forms.Button Start; 
    
   private WebClient client = new WebClient();
   
    
   /// 
   /// 必需的设计器变量。 
   /// 
   private System.ComponentModel.Container components = null; 
    
   public Form1() 
   { 
    // 
    // Windows 窗体设计器支持所必需的 
    // 
    InitializeComponent(); 
    
    // 
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
    // 
   } 
    
   /// 
   /// 清理所有正在使用的资源。 
   /// 
   protected override void Dispose( bool disposing ) 
   { 
    if( disposing ) 
    { 
     if (components != null) 
     { 
      components.Dispose(); 
     } 
    } 
    base.Dispose( disposing ); 
   } 
    
   #region Windows Form Designer generated code 
   /// 
   /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
   /// 此方法的内容。 
   /// 
   private void InitializeComponent() 
   { 
    this.label1 = new System.Windows.Forms.Label();
    this.label2 = new System.Windows.Forms.Label();
    this.srcAddress = new System.Windows.Forms.TextBox();
    this.tarAddress = new System.Windows.Forms.TextBox();
    this.statusBar = new System.Windows.Forms.StatusBar();
    this.Start = new System.Windows.Forms.Button();
    this.button1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(8, 32);
     = "label1";
    this.label1.Size = new System.Drawing.Size(72, 23);
    this.label1.TabIndex = 0;
    this.label1.Text = "文件地址:";
    this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // label2
    // 
    this.label2.Location = new System.Drawing.Point(8, 72);
     = "label2";
    this.label2.Size = new System.Drawing.Size(72, 23);
    this.label2.TabIndex = 1;
    this.label2.Text = "另存到:";
    this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
    // 
    // srcAddress
    // 
    this.srcAddress.Location = new System.Drawing.Point(80, 32);
     = "srcAddress";
    this.srcAddress.Size = new System.Drawing.Size(216, 21);
    this.srcAddress.TabIndex = 2;
    this.srcAddress.Text = "";
    // 
    // tarAddress
    // 
    this.tarAddress.Location = new System.Drawing.Point(80, 72);
     = "tarAddress";
    this.tarAddress.Size = new System.Drawing.Size(216, 21);
    this.tarAddress.TabIndex = 3;
    this.tarAddress.Text = "";
    // 
    // statusBar
    // 
    this.statusBar.Location = new System.Drawing.Point(0, 151);
     = "statusBar";
    this.statusBar.Size = new System.Drawing.Size(312, 22);
    this.statusBar.TabIndex = 4;
    // 
    // Start
    // 
    this.Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    this.Start.Location = new System.Drawing.Point(216, 112);
     = "Start";
    this.Start.Size = new System.Drawing.Size(75, 24);
    this.Start.TabIndex = 5;
    this.Start.Text = "开始下载";
    this.Start.Click += new System.EventHandler(this.Start_Click);
    
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(312, 173);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.Start);
    this.Controls.Add(this.statusBar);
    this.Controls.Add(this.tarAddress);
    this.Controls.Add(this.srcAddress);
    this.Controls.Add(this.label2);
    this.Controls.Add(this.label1);
    this.MaximizeBox = false;
     = "Form1";
    this.Text = "文件下载器";
    this.ResumeLayout(false); 
   } 
   #endregion 
    
   /// 
   /// 应用程序的主入口点。 
   /// 
   [STAThread] 
   static void Main() 
   { 
    Application.Run(new Form1()); 
   } 
    
   private void StartDownload() 
   { 
    Start.Enabled = false; 
    string URL = srcAddress.Text; 
    int n = URL.LastIndexOf("?"); 
    string URLAddress = URL; 
    //string URLAddress = URL.Substring(0,n);
    string fileName = URL.Substring(n+1,URL.Length-n-1); 
    string Dir = tarAddress.Text; 
    string Path = Dir+fileName; 
    
    try 
    { 
     WebRequest myre=WebRequest.Create(URLAddress); 
    } 
    catch(WebException exp) 
    { 
     MessageBox.Show(exp.Message,"Error"); 
    } 
    
    try 
    { 
     statusBar.Text = "开始下载文件..."; 
     client.DownloadFile(URLAddress,fileName); 
     Stream str = client.OpenRead(URLAddress); 
     //StreamReader reader = new StreamReader(str); ,这句没有什么必要!个人认为
     byte[] mbyte = new byte[100000]; 
     int allmybyte = (int)mbyte.Length; 
     int startmbyte = 0; 
     statusBar.Text = "正在接收数据..."; 
     //写入到BYTE数组中,起缓冲作用
     while(allmybyte>0) 
     { 
      int m = str.Read(mbyte,startmbyte,allmybyte); 
      if(m==0) 
       break; 
    
      startmbyte+=m; 
      allmybyte-=m; 
     } 
    
     FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write); 
     fstr.Write(mbyte,0,startmbyte); 
     str.Close(); 
     fstr.Close(); 
    
     statusBar.Text = "下载完毕!"; 
    } 
    catch(WebException exp) 
    { 
     MessageBox.Show(exp.Message,"Error"); 
     statusBar.Text = ""; 
    } 
    
    Start.Enabled = true; 
   } 
    
    
   private void Start_Click(object sender, System.EventArgs e) 
   { 
    Thread th = new Thread(new ThreadStart(StartDownload)); 
    th.Start(); 
   }   
  } 
 }用Visual C#实现文件下载
原创
             ©著作权归作者所有:来自51CTO博客作者biyusr216的原创作品,请联系作者获取转载授权,否则将追究法律责任        
             
            
        
                提问和评论都可以,用心的回复会被更多人看到
                评论
            
            
                    发布评论
                
            
            相关文章
        
        
- 
                    用Visual C#实现文件下载功能一.概述: 本文通过一个实例向大家介绍用Visual C#进行Internet通讯编程的一些基 c# thread components string internet
- 
                    用Visual C#实现文件下载功能(1)其中WebClient类处于System.Net名字空间中,该类的主要功能是提供向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法。然后用FileS c# 开发语言 控件 Visual FileStream
- 
                    用Visual C#实现文件下载功能(3)这样,程序主体部分的代码已经完成了,不过要完成全部程序还需要一些工作。由于在程序接收网络文件数据的时 c# 开发语言 FileStream System 数据
- 
                    用Visual C#创建Windows服务程序用Visual C#创建Windows服务程序 一.Windows服务介绍:Windows服务以前被称作NT服务,是一些运行在Wind windows c# installer service components
- 
                    C#如何实现文件上传与下载C#如何实现文件上传与下载,最近公司做项目,客户提了这个需求,主要的需求就是文件上传和下载,不单单是上传,上 c# 开发语言 解决方案 大文件上传 上传
- 
                    用Visual C#动态生成组件由于程序中为每一个创建的Button组件的事件都是一样的,要想正确处理这些组件的事件,就需要在事件触发的程序中判 c# java 服务器 System Click
- 
                    C# 下载文件C# 下载文件 C# 下载文件
- 
                    Visual C#演练更新:2007 年 11 月 演练为。 演 c# windows 多线程 basic web
 
 
                    













 
                    

 
                 
                    