文件压缩解压和调用系统里安装的软件

本文的压缩和解压都是调用系统自带的WinRAR解压缩软件来实现的,实例代码如下:

public partial class test2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //YS();//压缩
        //JY();//解压
        GetSoft();//调用软件
    }

//  参数说明:
//  a 添加文件到压缩文件中
//  -k 锁定压缩文件
//  -s产生固体存档,这样可以增大压缩比
//  -r包括子目录
//  -m1 设置压缩比
//  -m0   存储      添加到压缩文件时不压缩文件。
//  -m1   最快      使用最快方式(低压缩)
//  -m2   较快      使用快速压缩方式
//  -m3   标准      使用标准(默认)压缩方式
//  -m4   较好      使用较好压缩方式(较好压缩,但是慢)
//  -m5   最好      使用最大压缩方式(最好的压缩,但是最慢)

    /// <summary>
    /// 压缩文件
    /// </summary>
    public void YS()
    {
        string rar;
        RegistryKey reg;
        string args;
        ProcessStartInfo procStart;
        Process process;
        try
        {
            reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
            rar = reg.GetValue("").ToString();//获取注册表rar安装路径
            reg.Close();
            rar = rar.Substring(1, rar.Length - 7);//获取rar安装路径

            //args = "a -inul -y E:\\压缩1.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6145KB
            //args = "a -m1 -inul -y E:\\压缩1.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6908KB
            //args = "a -m2 -inul -y E:\\压缩2.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6522KB
            //args = "a -m3 -inul -y E:\\压缩3.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6145KB
            //args = "a -m4 -inul -y E:\\压缩4.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6123KB
            args = "a -m5 -inul E:\\压缩5.rar E:\\Test E:\\Samples E:\\Logo1.png E:\\set.config D:\\PATH";//文件压缩大小为6117KB,这里为rar的压缩命令格式(也可以自行扩展),第一个是压缩后的文件,后面几个路径是需要被压缩的文件和文件夹
            procStart = new ProcessStartInfo();
            procStart.FileName = rar;
            procStart.Arguments = args;//参数
            procStart.WindowStyle = ProcessWindowStyle.Hidden;//窗口状态,默认会显示压缩状态
            procStart.WorkingDirectory = Server.MapPath(""); ;//获取或设置要启动的进程的初始目录。
            process = new Process();
            process.StartInfo = procStart;
            process.Start();
            Response.Write("<script>alert('压缩成功')</script>");
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }

    /// <summary>
    /// 解压
    /// </summary>
    public void JY()
    {
        string rar;
        RegistryKey reg;
        string args;
        ProcessStartInfo startInfo;
        Process process;
        try
        {
            reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRar.exe\Shell\Open\Command");
            rar = reg.GetValue("").ToString();
            reg.Close();
            rar = rar.Substring(1, rar.Length - 7);
            args = " X E:\\压缩.rar E:\\Test2";//第一个路径是需要被解压的文件,第二个路径必须存在才能解压到该路径
            startInfo = new ProcessStartInfo();
            startInfo.FileName = rar;
            startInfo.Arguments = args;
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process = new Process();
            process.StartInfo = startInfo;//启用新的进程
            process.Start();
            Response.Write("<script>alert('解压成功')</script>");
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }

    /// <summary>
    /// 调用软件,示例:调用QQ播放器
    /// </summary>
    public void GetSoft()
    {
        RegistryKey reg;
        string ps;
        try
        {
            reg = Registry.ClassesRoot.OpenSubKey(@"Applications\QQPlayer.exe\shell\open\command");
            ps = reg.GetValue("").ToString();
            reg.Close();

            ps = ps.Substring(1, ps.Length - 10);
            ProcessStartInfo psPro = new ProcessStartInfo();
            psPro.FileName = ps;

            Process process = new Process();
            process.StartInfo = psPro;
            process.Start();

            Response.Write("<script>alert('调用QQ播放器成功!')</script>");
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }
}

 

posted on 2013-11-22 10:32  kingtiger  阅读(336)  评论(0编辑  收藏  举报

导航