RAR 存档格式

在数据为王、存储效率至关重要的数字时代,RAR 存档仍然是压缩和组织文件的坚定且普遍的解决方案。

关于 RAR 存档信息

RAR 存档格式是“Roshal Archive”的缩写,是一种广泛使用且备受推崇的压缩格式,旨在减小文件和文件夹的大小,同时保持其完整性。 RAR 由 Eugene Roshal 开发,以其高压缩比和支持各种压缩方法而闻名。

RAR 存档文件格式历史信息

RAR 由 Eugene Roshal 在 20 世纪 90 年代初创建。它最初是作为一种专有格式引入的,重点是高效压缩和错误恢复。多年来,RAR 因其卓越的压缩能力和强大的功能而广受欢迎。尽管 RAR 最初是闭源的,但后来已部分开放,解压算法也向公众开放。自 2013 年起,第 5 版格式成为默认选项。现代 WinRAR 仍然可以压缩到旧版 4 版本。

RAR 存档的结构

RAR 存档的结构是压缩文件和文件夹的集合。它们通常由一系列块组成,每个块在档案中都有特定的用途。这些块包括文件数据、标头和可选的恢复记录,可用于修复损坏的档案。大型档案可以分成较小的部分或合并在一起。也可以创建自解压档案。

RAR 压缩方法

RAR 只有一种压缩算法。该格式支持内容和文件名的强 AES 加密。 WinRAR 允许创建“可靠”档案,通过一起分析多个文件来提供更好的压缩比。过时版本 RAR4 可选择支持文本、音频和图像数据的专用压缩。

RAR 存档支持的操作

Aspose.ZIP 允许用户提取特定条目或整个存档。不支持创建和修改 RAR 存档。 Aspose.ZIP 能够提取现代 RAR5 和旧 RAR4 版本的存档。

RAR 文件 - 内部结构

RAR 存档具有分层内部结构,包括标头、压缩数据和可选的恢复记录。该结构允许高效提取特定文件,而无需解压缩整个存档。如果存档已加密,则它包含加密标头。主标头包括可选的定位器,可以快速访问不同服务块的位置,而无需扫描整个档案。每个条目都有文件和服务标头。这些标头包含文件属性和元数据,包括校验和、系统时间、名称和类似的详细信息。

RAR 文件 - 内部结构

RAR 存档的受欢迎程度和支持

RAR 存档因其出色的压缩比和多功能性而被广泛用于压缩和共享文件。它们在 Windows 和 macOS 生态系统中都很受欢迎,并得到各种软件工具的大力支持。虽然 RAR 并不完全开源,但许多第三方应用程序和库提供跨不同平台创建、提取和管理 RAR 存档的支持。

RAR 使用示例

Aspose.ZIP API 允许在您的应用程序中提取档案,而不需要任何其他第三方应用程序。 Aspose.ZIP API 提供 RarArchive 类来处理 RAR 存档。 PI 提供 RarArchiveEntry 类来表示 RAR 存档中的单个文件。

Extract an RAR Entry

The following code example demonstrates how to extract an entry using RarArchive instance.

    using (RarArchive archive = new RarArchive("archive.rar")))
    {
        using (var destination = File.Create(dataDir + "firstEntry.txt"))
        {
                using (var source = archive.Entries[0].Open())
                {
                    byte[] buffer = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)                       
                        destination.Write(buffer, 0, bytesRead);
                            
                }                    
        }
    }

Extract an Encrypted Entry

The following code example demonstrates how to extract an encrypted entry using RarArchive instance.

    FileInfo fi = new FileInfo("encrypted.rar");
    using (RarArchive archive = new RarArchive(fi.OpenRead()))
    {
        using (var destination = File.Create(dataDir + "firstEntry.txt"))
        {
            archive.Entries[0].Extract(destination, "p@s$w0rd");                
        }
    }

Extracting Compressed Directory

The following code example demonstrates how to all the files from RarArchive instance.

    using (RarArchive archive = new RarArchive("archive.rar")))
    {
        archive.ExtractToDirectory("extracted");
    }

有关 Zip 档案的其他信息

人们一直在问

1. RAR 比 ZIP 更高效吗?

RAR 是否比 ZIP 更高效取决于具体的用例和压缩数据的类型。 RAR 和 ZIP 都是流行的存档格式,但它们在压缩效率、功能和兼容性方面存在一些差异。

2. WinRAR 使用哪种算法?

WinRAR 主要使用 AES-256 位加密技术,这是由 WinRAR 的创建者 Eugene Roshal 开发的专有压缩算法。 RAR 算法以其高压缩率而闻名,与其他一些压缩算法相比,它可以生成更小的存档文件。

3. 所有 RAR 文件都安全吗?

RAR 文件本身通常是安全的,因为它们只是可以保存各种类型数据的存档容器,类似于 ZIP 文件 。然而,RAR 文件的安全性取决于它所保存的内容及其来源。