精华内容
下载资源
问答
  • C# 解/压缩rar/zip格式文件

    千次阅读 2018-04-12 14:46:35
    在C#.NET中压缩解压rar文件rar格式是一种具有专利文件的压缩格式,是一种商业压缩格式,不开源,对解码算法是公开的,但压缩算法是私有的,需要付费,如果需要在您的商业软件中使用rar格式进行解压缩,那么你需...

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar、zip和7z。
    本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库。

    在C#.NET中压缩解压rar文件

    rar格式是一种具有专利文件的压缩格式,是一种商业压缩格式,不开源,对解码算法是公开的,但压缩算法是私有的,需要付费,如果需要在您的商业软件中使用rar格式进行解压缩,那么你需要为rar付费,rar在国内很流行是由于盗版的存在,正因为算法是不开源的,所以我们压缩rar并没有第三方的开源库可供选择,只能另寻出路。

    针对rar的解压缩,我们通常使用winrar,几乎每台机器都安装了winrar,对于普通用户来说它提供基于用户界面的解压缩方式,另外,它也提供基于命令行的解压缩方式,这为我们在程序中解压缩rar格式提供了一个入口,我们可以在C#程序中调用rar的命令行程序实现解压缩,思路是这样的:

    1、判断注册表确认用户机器是否安装winrar程序,如果安装取回winrar安装目录。

    2、创建一个命令行执行进程。

    3、通过winrar的命令行参数实现解压缩。

    首先我们通过下面的代码判断用户计算机是否安装了winrar压缩工具:

    如果已经安装winrar可通过如下代码返回winrar的安装位置,未安装则返回空字符串,最后并关闭注册表:

    public static string ExistsWinRar()
    {
        string result = string.Empty;
    
        string key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(key);
        if (registryKey != null)
        {
            result = registryKey.GetValue("").ToString();
        }
        registryKey.Close();
    
        return result;
    }
    /// <summary>
    /// 将格式为rar的压缩文件解压到指定的目录
    /// </summary>
    /// <param name="rarFileName">要解压rar文件的路径</param>
    /// <param name="saveDir">解压后要保存到的目录</param>
    public static void DeCompressRar(string rarFileName, string saveDir)
    {
        string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(regKey);
        string winrarPath = registryKey.GetValue("").ToString();
        registryKey.Close();
        string winrarDir = System.IO.Path.GetDirectoryName(winrarPath);
        String commandOptions = string.Format("x {0} {1} -y", rarFileName, saveDir);
    
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = System.IO.Path.Combine(winrarDir, "rar.exe");
        processStartInfo.Arguments = commandOptions;
        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    
        Process process = new Process();
        process.StartInfo = processStartInfo;
        process.Start();
        process.WaitForExit();
        process.Close();
    }
    /// <summary>
    /// 将目录和文件压缩为rar格式并保存到指定的目录
    /// </summary>
    /// <param name="soruceDir">要压缩的文件夹目录</param>
    /// <param name="rarFileName">压缩后的rar保存路径</param>
    public static void CompressRar(string soruceDir, string rarFileName)
    {
        string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe";
        RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(regKey);
        string winrarPath = registryKey.GetValue("").ToString();
        registryKey.Close();
        string winrarDir = System.IO.Path.GetDirectoryName(winrarPath);
        String commandOptions = string.Format("a {0} {1} -r", rarFileName, soruceDir);
    
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = System.IO.Path.Combine(winrarDir, "rar.exe");
        processStartInfo.Arguments = commandOptions;
        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        Process process = new Process();
        process.StartInfo = processStartInfo;
        process.Start();
        process.WaitForExit();
        process.Close();
    }

    在C#.NET中压缩解压zip文件

    zip是一种免费开源的压缩格式,windows平台自带zip压缩和解压工具,由于算法是开源的,所以基于zip的解压缩开源库也很多,SharpZipLib是一个很不错的C#库,它能够解压缩zip、gzip和tar格式的文件,首先下载SharpZipLib解压后,在您的项目中引用ICSharpCode.SharpZLib.dll程序集即可,下面是一些关于SharpZipLib压缩和解压的示例。

    ZipOutputStream zipOutStream = new ZipOutputStream(File.Create("my.zip"));
    CreateFileZipEntry(zipOutStream, "file1.txt", "file1.txt");
    CreateFileZipEntry(zipOutStream, @"folder1\folder2\folder3\file2.txt", "file2.txt");
    zipOutStream.Close();
    Directory.CreateDirectory("ZipOutPut");
     ZipInputStream zipInputStream = new ZipInputStream(File.Open("my.zip", FileMode.Open));
     ZipEntry zipEntryFromZippedFile = zipInputStream.GetNextEntry();
     while (zipEntryFromZippedFile != null)
     {
         if (zipEntryFromZippedFile.IsFile)
         {
             FileInfo fInfo = new FileInfo(string.Format("ZipOutPut\\{0}", zipEntryFromZippedFile.Name));
             if (!fInfo.Directory.Exists) fInfo.Directory.Create();
    
             FileStream file = fInfo.Create();
             byte[] bufferFromZip = new byte[zipInputStream.Length];
             zipInputStream.Read(bufferFromZip, 0, bufferFromZip.Length);
             file.Write(bufferFromZip, 0, bufferFromZip.Length);
             file.Close();
         }
         zipEntryFromZippedFile = zipInputStream.GetNextEntry();
     }
     zipInputStream.Close();

    使用.NET中自带的类解压缩zip文件

    微软在System.IO.Compression命名空间有一些关于文件解压缩的类,如果只是希望压缩解压zip和gzip格式的文件,是个不错的选择,在NET Framework 4.5框架中,原生System.IO.Compression.FileSystem.dll程序集中新增了一个名为ZipFile的类,,让压缩和解压zip文件变得更简单,ZipFile的使用示例如下:

    System.IO.Compression.ZipFile.CreateFromDirectory(@"e:\test", @"e:\test\test.zip"); //压缩
    System.IO.Compression.ZipFile.ExtractToDirectory(@"e:\test\test.zip", @"e:\test"); //解压

    支持格式最多的C#解压缩开源库

    当您还苦苦在为上面的各种压缩格式发愁的时候,一个名为SharpCompress的C#框架被开源,您可以在搜索引擎中找到SharpCompress框架的开源代码,它支持:rar 7zip, zip, tar, tzip和bzip2格式的压缩和解压,下面的示例直接从rar格式文件读取并解压文件。

    using (Stream stream = File.OpenRead(@"C:\Code\sharpcompress.rar"))
    {
        var reader = ReaderFactory.Open(stream);
        while (reader.MoveToNextEntry())
        {
            if (!reader.Entry.IsDirectory)
            {
                Console.WriteLine(reader.Entry.FilePath);
                reader.WriteEntryToDirectory(@"C:\temp");
            }
        }
    }

    总结

    关于rar和zip格式相比,rar的压缩率比zip要高,而且支持分卷压缩,但rar是商业软件,需要付费,zip压缩率不如rar那么高,但开源免费,7zip格式开源免费,压缩率较为满意,这些压缩格式各有优势,就微软平台和一些开源平台来说,一般采用的都是zip格式,因为它更容易通过编程的方式实现,比rar更加可靠。感谢阅读,希望对您能有所帮助。

    特别感谢零度编程分享!(小辉只是用来知识学习与分享,如有侵权,联系删除,谢谢!)

    摘自零度编程。源链接:https://www.xcode.me/more/csharp-compression-zip-rar

    展开全文
  • Linux下解压rar格式文件

    千次阅读 2018-09-19 18:34:53
    rar类型的压缩协议是不开源的,所以linux系统自身是没有安装rar的解压工具的,所以我们需要自己下载rar工具,注:由于rar类型并不可以,理论上是要收费的,所以我们在往服务器上传文件时,尽量避免使用rar格式的。...

    首先:rar文件与zip tar.gz等等开源压缩文件是不一样的,rar类型的压缩协议是不开源的,所以linux系统自身是没有安装rar的解压工具的,所以我们需要自己下载rar工具,注:由于rar类型并不可以,理论上是要收费的,所以我们在往服务器上传文件时,尽量避免使用rar格式的。

    rar工具下载地址:http://www.rarlab.com/download.htm

    关于rar格式的解压方式:安装方法

    [root@localhost rar]# ls
    acknow.txt   license.txt  order.htm  rarfiles.lst  rar.txt     unrar
    default.sfx  makefile     rar        rar_static    readme.txt  whatsnew.txt
    [root@localhost rar]# make
    mkdir -p /usr/local/bin
    mkdir -p /usr/local/lib
    cp rar unrar /usr/local/bin
    cp rarfiles.lst /etc
    cp default.sfx /usr/local/lib

    安装完成之后:执行rar命令检查是否安装成功

    解压命令:rar x test.rar 将rar完整解压出来

    展开全文
  • @在Ubuntu中解压or压缩rar格式的压缩文件 Ubuntu下压缩or解压.rar格式的压缩文件   在Ubuntu中常用的压缩文件的形式是:.tar, .tar.bz2, tar.gz2等格式的文件,rar格式在windows中较为常见,下面来看看,在Ubuntu...

    @在Ubuntu中解压or压缩rar格式的压缩文件

    Ubuntu下压缩or解压.rar格式的压缩文件及rar、unrar命令详解

      在Ubuntu中常用的压缩文件的形式是:.tar, .tar.bz2, tar.gz2等格式的文件,rar格式在windows中较为常见,下面来看看,在Ubuntu中rar是如何进行文件的压缩和解压的吧。
    rar的使用

    1)安装rar压缩工具
    	sudo apt-get install rar
    2)安装unrar解压缩工具
    	sudo apt-get install unrar
    

    安装相关程序

    3)压缩文件,如下图所示压缩一个名为demo的文件夹为demo.rar文件
    	rar a demo ./demo
    4)解压文件,如下图所示解压demo.rar文件
    	unrar e ./demo.rar
    

    如何使用rar
    关于rar、unrar命令的使用,在安装好上述的两个软件之后使用rar/unrar help命令即可查看该命令的相关的使用帮助:
    rar help
    unrar help
    rar 命令

    Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
    <@listfiles...> <path_to_extract\>
    

    command参数

    参数 释义 备注
    <command> = a Add files to archive 将文件添加到存档
    <command> = c Add archive comment 添加文件备注
    <command> = ch Change archive parameters 更改存档参数
    <command> = cw Write archive comment to file 将存档的评论写入文件
    <command> = d Delete files from archive 删除文件

    switch参数

    参数 释义 备注
    <switch> =

    unrar 命令

    Usage:     unrar <command> -<switch 1> -<switch N> <archive> <files...>
                   <@listfiles...> <path_to_extract\>
    
    展开全文
  • junrar 包不支持解压RAR5.0以上的压缩包,百度云是如何实现在线解压缩的
  • ubuntu解压rar格式文件

    2016-06-03 07:09:04
    ubuntu如何解压rar格式文件。  1.下载: sudo apt-get install rar  2.解压文件: rar x 压缩文件.rar

        ubuntu如何解压rar格式文件。

        1.下载: sudo apt-get install rar

        2.解压文件: rar x 压缩文件.rar

       

    展开全文
  • 使用C#压缩解压rar和zip格式文件

    万次阅读 2015-06-19 16:32:16
    为了便于文件在网络中的传输和保存,通常将文件...rar格式是一种具有专利文件的压缩格式,是一种商业压缩格式,不开源,对解码算法是公开的,但压缩算法是私有的,需要付费,如果需要在您的商业软件中使用rar格式进行
  • rar压缩技术的版权是归WinRAR的,前段时间WinRAR收回了各个压缩软件的rar压缩版权。 也许你发现了,360压缩、2345压缩等本来都是可以压缩rar的,后来突然...现在已知的可以用rar格式压缩的正规压缩软件只有WinRAR了。
  • RAR文件格式学习(了解)

    千次阅读 2020-05-09 15:42:44
    0x01 RAR简介 RAR是一个强力压缩工具,允许你管理和控制压缩文件。压缩文件通常是一个带有 “.rar” 扩展名的文件。RAR的特点包括: RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。 分卷压缩:压缩后分割为多...
  • zip、rar文件格式

    千次阅读 2014-12-11 22:57:57
    zip、rar文件格式 目录 一、目录表(TOC)与分卷(Volume) 二、固实(solid)压缩方式 三、安全性 四、开放性 五、结论 声明:本文并非学术论文,所述内容仅为我个人的看法和体会,不具任何权威性,仅...
  • 开始-运行(快捷键:WIN+R) 输入CMD 回车 因为文件都在D盘根文件夹下 所以 输入 D: 然后再输入 copy/b 1.jpg+12.rar 2.jpg (2.jpg是生成的文件 可以自己命名)  如果要打开 就把后缀名的.jpg 改为...
  • 为了便于文件在网络中的传输和保存,通常将文件...rar格式是一种具有专利文件的压缩格式,是一种商业压缩格式,不开源,对解码算法是公开的,但压缩算法是私有的,需要付费,如果需要在您的商业软件中使用rar格式进行
  • ARPR软件破解带密码rar格式文件

    千次阅读 2018-04-02 11:55:01
    arpr破解版页面简洁,功能强大,支持暴力破解,掩码破解和字典破解,并且能预估算出密码所需要的时间,是目前网络上最有效最快速的rar密码破解软件。 使用方法 网上下载该软件,运行该软件,界面如下: 选中...
  • Linux(Centos7)环境下解压rar格式文件

    千次阅读 2020-07-14 15:42:56
    Centos7环境下解压rar格式文件1 下载rar软件压缩包2 加压rar压缩包3 编译安装rar4 安装部分依赖包5 解压文件、压缩文件6 rar更多使用方法 1 下载rar软件压缩包 wget ...
  • 项目中需要上传rar和zip格式的文件,于是在程序中写:$config['allowed_types'] = 'rar|zip|7z'; 运行,但是上传不了,报错,log中提示: ERROR - 2013-08-01 01:06:43 --> The filetype you are attempting to ...
  • Ubuntu解压缩RAR 7Z格式的文件

    千次阅读 2008-03-15 14:24:00
    sudo apt-get install unrar rarsudo apt-get install p7zip增加解压缩RAR、7z格式的功能,毕竟这两个格式使用很广泛。
  •  下载好后把rar文件夹提取出来, 在终端中进入rar文件夹,  运行make指令,    然后就可以解压了.    rar e aa.rar 将aa.rar压缩文件解压到当前目录,aa文件中原包含的目录全没有。 rar x
  • centos下解压rar格式文件

    千次阅读 2018-08-23 19:08:42
    http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
  • 下面小编为大家详细的介绍一下Mac如何解压rar,zip等各种格式文件。 图文教程 第一步:下载该软件,下载完成后该软件将在程序坞内显示 第二步:在Rar文件上右键,点击打开方式并选择该软件 第三步:该软件将自动解压...
  • ubuntu rar压缩格式解压工具安装

    千次阅读 2012-06-29 10:46:59
    压缩功能: 安装 sudo apt-get install rar 卸载 sudo apt-get remove rar 解压功能: 安装 sudo apt-get install unrar 卸载 sudo apt-get ...解压:rar x FileName.rar ...压缩:rar a FileName.rar DirN
  • CentOS下原本是不支持rar文件的,需要安装liunx下的winrar版本 wget http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz tar -zxvf rarlinux-4.0.1.tar.gz cd rar  make yum -y install libstdc++.so.6 ...
  • .rar .zip格式压缩原理

    千次阅读 2010-05-24 17:16:00
    许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了...
  • <br />ubuntu下双击一个。rar格式文件时,总会出现如下的界面         <br /> 如果想打开RAR的文档就需要安装一个RAR解析,方法是打开终端,输入:  sudo apt-get
  • Mac 解压rar格式文件*工具包(zip格式):http://download.csdn.net/detail/u011445031/9854187将工具包解压到你安装目录即可。使用: 打开终端定位到安装目录rar目录下 执行命令:unbar x 要解压的文件名路径.rar ...
  • Win8系统下如何运行rar格式文件 Win8电脑rar文件怎么解压打开 现在应该会有很多人都在使用win8系统的电脑,因为随着win8系统的推广,很多的电脑买回来就是win8的系统。但是对于很多使用惯了win7系统的人来说,有的...
  • 在win7下,可以直接将要压缩的文件选中,然后右键——>发送到zip这样压缩成.zip格式的压缩文件; 在xp系统下,可以先在桌面或者硬盘空白地方新建一个win rar zip压缩文件,然后打开,将所要压缩的内容全部放进去压缩...
  • rar文件怎么打开?...毕竟Win7默认只支持打开.ZIP格式压缩文件,不支持.rar格式的压缩文件。  什么是.rar文件?  我们先来简单跟系统吧小编理解一下什么是压缩文件。压缩文件可以理解为把N个文
  • 说到解压文件,使用过win系统的用户肯定不会陌生,无论是自带的还是第三方解压软件都非常多,rar、zip格式都不是难题。但是mac系统中怎么打开rar/zip等压缩文件?Mac自带系统就能解压zip格式文件,但是别人发过来的...
  • JAVA 使用sevenzipjbinding 解压多种压缩格式zip,tar,rar(含rar5)等 前段时间一直在找java 解压的相关开源工具。使用了很多个工具 都是不支持rar5 压缩标准的文件解压的。多搜搜了下发现了这个好东西。跨平台,多...
  • 下载的电子书和文稿都打开不了,我的imac系统是ios yosemite10.10.2. 怎么解决呢?
  • 如何在linux下解压缩rar格式的文件压缩包 前言:没有特殊原因,文档如果要传到linux上,一定要打成*.zip格式, 这样方便解压,一般来说没有理由要用rar.关于 linux上unzip命令有空细讲, 本节讲下,如何让linux...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,142
精华内容 30,856
关键字:

rar是什么格式