zoukankan      html  css  js  c++  java
  • 下载工具

    运行效果:

    项目结构图:

    DownLoad.cs文件代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace DawnLoad
    12 {
    13     public partial class DownLoad : Form
    14     {
    15         public DownLoad()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         //下载路径,文件保存路径
    21         public static string DownLoadPath;
    22         public static string StoragePath;
    23 
    24         /// <summary>
    25         /// 加载事件
    26         /// </summary>
    27         private void DownLoad_Load(object sender, EventArgs e)
    28         {
    29 
    30         }
    31 
    32         /// <summary>
    33         /// 下载事件
    34         /// </summary>
    35         /// <param name="sender"></param>
    36         /// <param name="e"></param>
    37         private void button1_Click_1(object sender, EventArgs e)
    38         {
    39             //给定下载路径
    40             DownLoadPath = this.txt_DowanLoadPath.Text.Trim();
    41 
    42             //判断所输入的路径是不是为空
    43             Command.IsNotEmpty.txtIsNotEmpty(DownLoadPath, StoragePath);
    44 
    45             //格式化文件保存路径,使的保存的路径后面所带的文件名,跟下载时候所带有的文件名称一致
    46             string newStoragePath = Command.FomatPath.FomatStoragePath(DownLoadPath, StoragePath);
    47 
    48             //下载开始下载
    49             Command.DownLoad.DownloadFile(DownLoadPath, newStoragePath, progressBar1, lbl_JD);
    50         }
    51 
    52         /// <summary>
    53         /// 浏览事件,选择保存路径
    54         /// </summary>
    55         /// <param name="sender"></param>
    56         /// <param name="e"></param>
    57         private void button2_Click(object sender, EventArgs e)
    58         {
    59             FolderBrowserDialog folderDlg = new FolderBrowserDialog();
    60             folderDlg.ShowDialog();
    61             folderDlg.Description = "请选择保存文件的文件夹!";
    62             if (folderDlg.SelectedPath == "")
    63             {
    64                 return;
    65             }
    66             else
    67             {
    68                 StoragePath = folderDlg.SelectedPath;
    69                 this.txt_StoragePathPath.Text = StoragePath;
    70                 return;
    71             }
    72         }
    73     }
    74 }

    Command文件夹下的DownLoad.cs代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Windows.Forms;
     7 
     8 namespace DawnLoad.Command
     9 {
    10     public static class DownLoad
    11     {
    12         /// <summary>        
    13         /// c#,.net 下载文件        
    14         /// </summary>        
    15         /// <param name="URL">下载文件地址</param>       
    16         /// <param name="Filename">下载后的存放地址</param>        
    17         /// <param name="Prog">用于显示的进度条</param>
    18         /// <param name="label1">显示下载完成度</param>
    19         public static void DownloadFile(string URL, string filename, System.Windows.Forms.ProgressBar prog, System.Windows.Forms.Label label1)
    20         {
    21             float percent = 0;
    22             try
    23             {
    24                 System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
    25                 System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
    26                 long totalBytes = myrp.ContentLength;
    27                 if (prog != null)
    28                 {
    29                     prog.Maximum = (int)totalBytes;
    30                 }
    31                 System.IO.Stream st = myrp.GetResponseStream();
    32                 System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create);
    33                 long totalDownloadedByte = 0;
    34                 byte[] by = new byte[1024 * 1024 * 1];
    35                 int osize = st.Read(by, 0, (int)by.Length);
    36                 while (osize > 0)
    37                 {
    38                     totalDownloadedByte = osize + totalDownloadedByte;
    39                     System.Windows.Forms.Application.DoEvents();
    40                     so.Write(by, 0, osize);
    41                     if (prog != null)
    42                     {
    43                         prog.Value = (int)totalDownloadedByte;
    44                     }
    45                     osize = st.Read(by, 0, (int)by.Length);
    46 
    47                     percent = (float)totalDownloadedByte / (float)totalBytes * 100;
    48                     label1.Text = " 当前下载进度" + percent.ToString() + "%";
    49                     System.Windows.Forms.Application.DoEvents(); //必须加注这句代码,否则label1将因为循环执行太快而来不及显示信息
    50                 }
    51                 MessageBox.Show("下载完成!", "提示");
    52                 so.Close();
    53                 st.Close();
    54             }
    55             catch (System.Exception ex)
    56             {
    57                 MessageBox.Show(ex.Message, "提示");
    58             }
    59         }
    60     }
    61 }

    Command文件夹下的FomatPath.cs代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.IO;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace DawnLoad.Command
     9 {
    10     public static class FomatPath
    11     {
    12         /// <summary>
    13         /// 格式化保存文件的路径
    14         /// </summary>
    15         /// <param name="DownLoadPath">下载文件的URL,用来截取文件名</param>
    16         /// <param name="StoragePath">保存文件的原始路径</param>
    17         /// <returns>格式化后的路径</returns>
    18         public static string FomatStoragePath(string DownLoadPath, string StoragePath)
    19         {
    20             string newStoragePath = string.Empty;
    21 
    22             string newDownLoadPath = Path.GetFileName(DownLoadPath);
    23 
    24             newDownLoadPath = newDownLoadPath.Replace('&', ' ');
    25 
    26             newStoragePath = StoragePath + "\" +  newDownLoadPath;
    27 
    28             return newStoragePath;
    29         }
    30     }
    31 }

    Command文件夹下的IsNotEmpty.cs代码:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Windows.Forms;
     7 
     8 namespace DawnLoad.Command
     9 {
    10     public static class IsNotEmpty
    11     {
    12         public static void txtIsNotEmpty(string DownLoadPath, string StoragePath)
    13         {
    14             if (DownLoadPath.Trim().Length == 0)
    15             {
    16                 MessageBox.Show("下载路径文本框不能为空!", "提示");
    17                 return;
    18             }
    19 
    20             if (StoragePath.Trim().Length == 0)
    21             {
    22                 MessageBox.Show("保存路径文本框不能为空!", "提示");
    23                 return;
    24             }
    25         }
    26     }
    27 }

    源码:百度云,[下载工具]文件夹。

  • 相关阅读:
    String数组转换成Integer数组
    码云远程仓库用户名和密码修改了,本地如何删除修改?
    Git操作过程(码云)
    SpringCloud应用之配置中心Nacos
    SpringCloud应用之网关GateWay
    SpringCloud应用之熔断器Hystrix
    SpringCloud应用之服务调用Feign
    装饰者设计模式
    Spring 自动装配及其注解
    Spring Bean自动装配有哪些方式?
  • 原文地址:https://www.cnblogs.com/KTblog/p/4509559.html
Copyright © 2011-2022 走看看