码迷,mamicode.com
首页 > Windows程序 > 详细

C#中使用aria2c进行下载并显示进度条

时间:2016-08-18 09:59:03      阅读:985      评论:0      收藏:0      [点我收藏+]

标签:

正则表达式的生成网站:

http://www.txt2re.com/index-csharp.php3

 

Program.cs

 static void Main(string[] args)
        {
            var url =
                "https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe";

            HttpDownLoad.DownloadFileByAria2(url, "c:\\NDP461-KB3102436-x86-x64-AllOS-ENU.exe");
            Console.ReadLine();
        }

RedirectRun.cs

using System.Diagnostics;

namespace ConsoleApplication1
{
   public class RedirectRun
    {
        /// <summary>
        /// 功能:重定向执行
        /// </summary>
        /// <param name="p"></param>
        /// <param name="exe"></param>
        /// <param name="arg"></param>
        /// <param name="output"></param>
        public static void RedirectExcuteProcess(Process p,string exe, string arg, DataReceivedEventHandler output)
        {
                p.StartInfo.FileName = exe;
                p.StartInfo.Arguments = arg;

                p.StartInfo.UseShellExecute = false;    //输出信息重定向
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.RedirectStandardOutput = true;

                p.OutputDataReceived += output;
                p.ErrorDataReceived += output;

                p.Start();                    //启动线程
                p.BeginOutputReadLine();
                p.BeginErrorReadLine();
                p.WaitForExit();            //等待进程结束
        }
     }
}

HttpDownLoad.cs

using System;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    public class HttpDownLoad
    {
       
        public static bool DownloadFileByAria2(string url, string strFileName)
        {
            var tool = AppDomain.CurrentDomain.BaseDirectory + "\\aria2-1.19.0\\aria2c.exe";
            var fi = new FileInfo(strFileName);
            var command = " -c -s 5 --check-certificate=false -d " + fi.DirectoryName + " -o " + fi.Name + " " + url;
            Process _p;
            using (_p = new Process())
            {
                RedirectRun.RedirectExcuteProcess(_p, tool, command, (s, e) => ShowInfo(e.Data));
            }
            return true;
        }

        public static void ShowInfo(string a)
        {
            if (a == null) return;

             const string re1 = ".*?"; // Non-greedy match on filler
             const string re2 = "(\\(.*\\))"; // Round Braces 1

             var r = new Regex(re1+re2,RegexOptions.IgnoreCase|RegexOptions.Singleline);
             var m = r.Match(a);
             if (m.Success)
             {
                   var rbraces1=m.Groups[1].ToString().Replace("(","").Replace(")","").Replace("%","");
                     if (rbraces1 == "OK")
                     {
                         rbraces1 = "100";
                     }
                   Console.WriteLine(rbraces1);
             }
        }
    }
}

 

C#中使用aria2c进行下载并显示进度条

标签:

原文地址:http://www.cnblogs.com/littlehb/p/5782714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!