zoukankan      html  css  js  c++  java
  • 用Visual C#实现文件下载

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Net;
    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);
       this.label1.Name = "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);
       this.label2.Name = "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);
       this.srcAddress.Name = "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);
       this.tarAddress.Name = "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);
       this.statusBar.Name = "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);
       this.Start.Name = "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;
       this.Name = "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();
      }

       
     }
    }     

  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/springxie/p/1356139.html
Copyright © 2011-2022 走看看