Class RarArchive

Class RarArchive

Namespace: Aspose.Zip.Rar
Assembly: Aspose.Zip.dll (25.1.0)

此类表示 RAR 压缩文件。使用它来提取 RAR 压缩文件。

public class RarArchive : IArchive, IDisposable

继承

objectRarArchive

实现

IArchive, IDisposable

继承成员

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

构造函数

RarArchive(string, RarArchiveLoadOptions)

初始化 Aspose.Zip.Rar.RarArchive 类的新实例,并构建可以从归档中提取的条目列表。

public RarArchive(string path, RarArchiveLoadOptions loadOptions = null)

参数

path string

归档文件的完全限定或相对路径。

loadOptions RarArchiveLoadOptions

加载现有归档的选项。

示例

以下示例提取一个归档,然后将第一个条目解压缩到 MemoryStream

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);
    }
}

备注

此构造函数不会解压缩任何条目。请参阅 Aspose.Zip.Rar.RarArchiveEntry.Open(System.String) 方法以进行解压缩。

异常

ArgumentNullException

path 为 null。

SecurityException

调用者没有访问所需权限。

ArgumentException

path 为空,仅包含空格或包含无效字符。

UnauthorizedAccessException

拒绝访问文件 path

PathTooLongException

指定的 path、文件名或两者超出了系统定义的最大长度。例如,在基于 Windows 的平台上,路径必须少于 248 个字符,文件名必须少于 260 个字符。

NotSupportedException

path 中间包含冒号 (:)。

FileNotFoundException

未找到文件。

DirectoryNotFoundException

指定的路径无效,例如位于未映射的驱动器上。

IOException

文件已被打开。

RarArchive(Stream, RarArchiveLoadOptions)

初始化 Aspose.Zip.Rar.RarArchive 类的新实例,并构建可以从归档中提取的条目列表。

public RarArchive(Stream sourceStream, RarArchiveLoadOptions loadOptions = null)

参数

sourceStream Stream

归档的源。

loadOptions RarArchiveLoadOptions

加载现有归档的选项。

示例

以下示例解密并解压缩第一个条目到 MemoryStream

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);
    }
}

备注

此构造函数不会解压缩任何条目。请参阅 Aspose.Zip.Rar.RarArchiveEntry.Open(System.String) 方法以进行解压缩。

异常

ArgumentException

sourceStream 不是可寻址的。

InvalidDataException

归档的签名错误。 - 或 - 文件不是 RAR 归档。

属性

Entries

获取构成 RAR 归档的 Aspose.Zip.Rar.RarArchiveEntry 类型的条目。

public ReadOnlyCollection<rararchiveentry> Entries { get; }

属性值

ReadOnlyCollection<RarArchiveEntry&gt;

方法

Dispose(bool)

执行与释放、释放或重置非托管资源相关的应用程序定义任务。

protected virtual void Dispose(bool disposing)

参数

disposing bool

是否应释放托管资源。

Dispose()

执行与释放、释放或重置非托管资源相关的应用程序定义任务。

public void Dispose()

ExtractToDirectory(string, string)

将归档中的所有文件提取到提供的目录中。

[Obsolete("For extraction encrypted RAR archive please provide password in constructor with Aspose.Zip.Rar.RarArchiveLoadOptions.DecryptionPassword")]
public void ExtractToDirectory(string destinationDirectory, string password = null)

参数

destinationDirectory string

提取文件的目录路径。

password string

可选的解密密码。

示例

using (var archive = new RarArchive("archive.rar")) 
{ 
   archive.ExtractToDirectory("C:\extracted", "$ecRet");
}

备注

如果目录不存在,将会创建它。

异常

ArgumentNullException

destinationDirectory 为 null。

PathTooLongException

指定的路径、文件名或两者超出了系统定义的最大长度。例如,在基于 Windows 的平台上,路径必须少于 248 个字符,文件名必须少于 260 个字符。

SecurityException

调用者没有访问现有目录的所需权限。

NotSupportedException

如果目录不存在,路径包含一个不是驱动器标签(“C:\”)部分的冒号字符 (:)。

ArgumentException

destinationDirectory 是零长度字符串,仅包含空格,或包含一个或多个无效字符。您可以使用 System.IO.Path.GetInvalidPathChars 方法查询无效字符。 - 或 - 路径以冒号字符 (:) 为前缀或仅包含冒号字符。

IOException

指定路径的目录是一个文件。 - 或 - 网络名称未知。

ExtractToDirectory(string)

将归档中的所有文件提取到提供的目录中。

public void ExtractToDirectory(string destinationDirectory)

参数

destinationDirectory string

提取文件的目录路径。

示例

using (var archive = new RarArchive("archive.rar")) 
{ 
   archive.ExtractToDirectory("C:\extracted");
}

备注

如果目录不存在,将会创建它。

异常

ArgumentNullException

destinationDirectory 为 null。

PathTooLongException

指定的路径、文件名或两者超出了系统定义的最大长度。例如,在基于 Windows 的平台上,路径必须少于 248 个字符,文件名必须少于 260 个字符。

SecurityException

调用者没有访问现有目录的所需权限。

NotSupportedException

如果目录不存在,路径包含一个不是驱动器标签(“C:\”)部分的冒号字符 (:)。

ArgumentException

destinationDirectory 是零长度字符串,仅包含空格,或包含一个或多个无效字符。您可以使用 System.IO.Path.GetInvalidPathChars 方法查询无效字符。 - 或 - 路径以冒号字符 (:) 为前缀或仅包含冒号字符。

IOException

指定路径的目录是一个文件。 - 或 - 网络名称未知。

 中文