RarArchive.RarArchive

RarArchive(string, RarArchiveLoadOptions)

初始化一个新的实例RarArchive可以从存档中提取类和组合条目列表。

public RarArchive(string path, RarArchiveLoadOptions loadOptions = null)
范围类型描述
pathString存档文件的完全限定路径或相对路径。
loadOptionsRarArchiveLoadOptions加载现有存档的选项。

例外

例外(健康)状况
ArgumentNullExceptionpath一片空白。
SecurityException调用者没有所需的访问权限。
ArgumentExceptionpath为空、仅包含空格或包含无效字符。
UnauthorizedAccessException访问文件path被拒绝。
PathTooLongException指定的path、文件名或两者都超过了系统定义的最大长度。例如,在基于 Windows 的平台上,路径必须少于 248 个字符,文件名必须少于 260 个字符。
NotSupportedException归档于path在字符串中间包含一个冒号 (:)。

评论

此构造函数不解压缩任何条目。看Open解压方法.

例子

以下示例提取存档,然后将第一个条目解压缩到内存流.

var extracted = new MemoryStream();
using (RarArchive archive = new RarArchive("data.rar"))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

也可以看看


RarArchive(Stream, RarArchiveLoadOptions)

初始化一个新的实例RarArchive可以从存档中提取类和组合条目列表。

public RarArchive(Stream sourceStream, RarArchiveLoadOptions loadOptions = null)
范围类型描述
sourceStreamStream存档的来源。
loadOptionsRarArchiveLoadOptions加载现有存档的选项。

例外

例外(健康)状况
ArgumentExceptionsourceStream不可搜索。
InvalidDataException存档签名错误。 - 或 - 该文件不是 RAR 压缩文件。
InvalidOperationException

评论

此构造函数不解压缩任何条目。看Open解压方法.

例子

以下示例解密并解压缩第一个条目内存流.

var fs = File.OpenRead("encrypted.rar");
var extracted = new MemoryStream();
using (RarArchive archive = new RarArchive(fs, new RarArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

也可以看看