zoukankan      html  css  js  c++  java
  • C#下载文件(可显示进度)的方法实现

    在做WIN FORM程序中经常要使用到升级功能,就需要从服务器上下载最新扔软件程序。如何下载呢?代码实现如下:

            /// <summary>        
            
    ///
     c#,.net 下载文件        
            
    /// </summary>
            
            
    /// <param name="URL">下载文件地址</param>
           
            
    /// <param name="Filename">下载后的存放地址</param>
            
            
    /// <param name="Prog">用于显示的进度条</param>
     
            public void DownloadFile(string URL, string filename, System.Windows.Forms.ProgressBar prog, System.Windows.Forms.Label label1)
             {

                float percent = 0;
                
    try

                 {
                     System.Net.HttpWebRequest Myrq 
    = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
                     System.Net.HttpWebResponse myrp 
    =
     (System.Net.HttpWebResponse)Myrq.GetResponse();
                    
    long totalBytes =
     myrp.ContentLength;
                    
    if (prog != null
    )
                     {
                         prog.Maximum 
    = (int
    )totalBytes;
                     }
                     System.IO.Stream st 
    =
     myrp.GetResponseStream();
                     System.IO.Stream so 
    = new
     System.IO.FileStream(filename, System.IO.FileMode.Create);
                    
    long totalDownloadedByte = 0
    ;
                    
    byte[] by = new byte[1024
    ];
                    
    int osize = st.Read(by, 0, (int
    )by.Length);
                    
    while (osize > 0
    )
                     {
                         totalDownloadedByte 
    = osize +
     totalDownloadedByte;
                         System.Windows.Forms.Application.DoEvents();
                         so.Write(by, 
    0
    , osize);
                        
    if (prog != null
    )
                         {
                             prog.Value 
    = (int
    )totalDownloadedByte;
                         }
                         osize 
    = st.Read(by, 0, (int
    )by.Length);

                         percent = (float)totalDownloadedByte / (float)totalBytes * 100;
                         label1.Text = "当前补丁下载进度" + percent.ToString() + "%";
                        
     System.Windows.Forms.Application.DoEvents(); //必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
                     }
                     so.Close();
                     st.Close();
                 }
                
    catch
     (System.Exception)
                 {
                    
    throw
    ;
                 }
             }

     

    http://www.cnblogs.com/Slxj/archive/2011/08/21/2147672.html

  • 相关阅读:
    Qt——QLineEdit使用总结
    qt中的lineEdit文本输入框的输入类型限制(三种验证类)
    qt 创建线程
    linux 安装和卸载软件
    c 结构体中的变长数组
    Qt之QSS(QDarkStyleSheet)
    Qt之QSS(Q_PROPERTY-原始属性)
    Qt之QSS(Q_PROPERTY-自定义属性)
    Qt之QSS(白色靓丽)
    Qt之QSS(样式表语法)
  • 原文地址:https://www.cnblogs.com/Areas/p/2584254.html
Copyright © 2011-2022 走看看