Class Archive

Class Archive

名称: Aspose.Zip 收藏: Aspose.Zip.dll (25.5.0)

此类代表一个 zip 档案文件. 使用它来编写、提取或更新 ZIP 文件。

public class Archive : IArchive, IDisposable

Inheritance

object Archive

Implements

IArchive , IDisposable

继承人

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

Constructors

Archive(ArchiveEntrySettings)

启动 Aspose.Zip.Archive 类的新例子,其输入可选设置。

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parameters

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于新添加的 Aspose.Zip.ArchiveEntry 项目。如果没有说明,最常见的 Deflate 压缩没有加密将被使用。

Examples

下面的示例显示如何用默认设置压缩单个文件。

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Archive(流, ArchiveLoadOptions, ArchiveEntrySettings)

启动 Aspose.Zip.Archive 类的新例子,并组成可以从档案中提取的输入列表。

public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parameters

sourceStream Stream

档案的来源。

loadOptions ArchiveLoadOptions

可以使用现有存档的选项。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于新添加的 Aspose.Zip.ArchiveEntry 项目。如果没有说明,最常见的 Deflate 压缩没有加密将被使用。

Examples

下面的例子提取一个加密的档案,然后将第一个输入压缩到一个。

var fs = File.OpenRead("encrypted.zip");
var extracted = new MemoryStream();
using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { 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);
    }
}

Remarks

此构建器不会压缩任何输入. 查看 Aspose.Zip.ArchiveEntry.Open(System.String) 压缩方法。

Exceptions

ArgumentException

sourceStream’ is not seekable.

InvalidDataException

AES 的加密标题与 WinZip 压缩方法相矛盾。

Archive(字符串, ArchiveLoadOptions, ArchiveEntrySettings)

启动 Aspose.Zip.Archive 类的新例子,并组成可以从档案中提取的输入列表。

public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parameters

path string

完全合格的或相对的路径到档案文件。

loadOptions ArchiveLoadOptions

可以使用现有存档的选项。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于新添加的 Aspose.Zip.ArchiveEntry 项目。如果没有说明,最常见的 Deflate 压缩没有加密将被使用。

Examples

下面的例子提取一个加密的档案,然后将第一个输入压缩到一个。

var extracted = new MemoryStream();
using (Archive archive = new Archive("encrypted.zip", new ArchiveLoadOptions() { 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);
    }
}

Remarks

此构建器不会压缩任何输入. 查看 Aspose.Zip.ArchiveEntry.Open(System.String) 压缩方法。

Exceptions

ArgumentNullException

path’ is null.

SecurityException

召唤者没有所需的访问许可。

ArgumentException

path’ 是空的,只包含白色空间,或包含无效的字符。

UnauthorizedAccessException

拒绝访问 path" 文件。

PathTooLongException

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

NotSupportedException

文件在 path’ 中间包含一个列(:)。

FileNotFoundException

文件未找到。

DirectoryNotFoundException

指定的路径是无效的,例如在无地图驱动器上。

IOException

文件已经开放了。

InvalidDataException

文件是腐败的。

Archive(字符串, string( ), ArchiveLoadOptions)

从多容量Zip档案中启动一个新的例子,并组成一个可以从档案中提取的输入列表。

public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)

Parameters

mainSegment string

通往中央目录的多容量档案的最后一部分。

通常,这个部分具有 *.zip 扩展和比其他更小。

segmentsInOrder string ( )

路径到每个部分,但最后的多容量ZIP档案遵守命令。

通常他们命名 filename.z01, filename.z02, …, filename.z(n-1)。

loadOptions ArchiveLoadOptions

可以使用现有存档的选项。

Examples

此样本将三个部分的档案提取到一个目录。

using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
    a.ExtractToDirectory("destination");
}

Exceptions

EndOfStreamException

不能加载 ZIP 标题,因为提供的文件是腐败的。

Properties

Entries

收到 Aspose.Zip.ArchiveEntry 类型的输入,构成档案。

public ReadOnlyCollection<archiveentry> Entries { get; }

财产价值

ReadOnlyCollection < ArchiveEntry >

NewEntrySettings

压缩和加密设置用于新添加的 Aspose.Zip.ArchiveEntry 项目。

public ArchiveEntrySettings NewEntrySettings { get; }

财产价值

ArchiveEntrySettings

Methods

CreateEntries(首页 > 博尔)

将所有文件和目录重复添加到存档中。

public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)

Parameters

directory DirectoryInfo

编辑器压缩。

includeRootDirectory bool

指示是否要包含根目录本身。

Returns

Archive

编写的存档与输入。

Examples

using (Archive archive = new Archive())
{
    DirectoryInfo folder = new DirectoryInfo("C:\folder");
    archive.CreateEntries(folder);
    archive.Save("folder.zip");
}

Exceptions

DirectoryNotFoundException

通往 directory’ 的路径是无效的,例如在无地图驱动器上。

SecurityException

通话者没有必要的许可访问 directory。

CreateEntries(布尔,布尔)

将所有文件和目录重复添加到存档中。

public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)

Parameters

sourceDirectory string

编辑器压缩。

includeRootDirectory bool

指示是否要包含根目录本身。

Returns

Archive

编写的存档与输入。

Examples

using (Archive archive = new Archive())
{
    archive.CreateEntries("C:\folder");
    archive.Save("folder.zip");
}

CreateEntry(字符串,字符串, bool, ArchiveEntrySettings)

在档案中创建一个单一输入。

public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parameters

name string

入口的名称。

path string

新文件的完全合格名称,或者要压缩的相对文件名。

openImmediately bool

事实上,如果立即打开文件,否则在存储档案上打开文件。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。

Returns

ArchiveEntry

Zip 入口。

Examples

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Remarks

输入名单仅在参数中设置,参数中提供的文件名不影响输入名单。

如果文件与参数立即打开,它将被阻止,直到存储文件。

Exceptions

ArgumentNullException

path’ is null.

SecurityException

召唤者没有所需的访问许可。

ArgumentException

path’ 是空的,只包含白色空间,或包含无效的字符。

UnauthorizedAccessException

拒绝访问 path" 文件。

PathTooLongException

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

NotSupportedException

文件在 path’ 中间包含一个列(:)。

CreateEntry(字符串, 流, ArchiveEntrySettings)

在档案中创建一个单一输入。

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)

Parameters

name string

入口的名称。

source Stream

输入流的输入流。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。

Returns

ArchiveEntry

Zip 入口。

Examples

using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
    archive.Save("archive.zip");
}

CreateEntry(字符串, FileInfo, bool, ArchiveEntrySettings)

在档案中创建一个单一输入。

public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parameters

name string

入口的名称。

fileInfo FileInfo

要压缩的文件的代码。

openImmediately bool

事实上,如果立即打开文件,否则在存储档案上打开文件。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。

Returns

ArchiveEntry

Zip 入口。

Examples

组成存档与各个加密方法和密码加密的输入。

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")));
        archive.CreateEntry("entry2.bin", fi2, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass2", EncryptionMethod.AES128)));
        archive.CreateEntry("entry3.bin", fi3, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass3", EncryptionMethod.AES256)));
        archive.Save(zipFile);
    }
}

Remarks

输入名单仅在参数中设置,参数中提供的文件名不影响输入名单。

如果文件与参数立即打开,它将被阻止,直到存储文件。

Exceptions

UnauthorizedAccessException

fileInfo’ is read-only or is a directory.

DirectoryNotFoundException

指定的路径是无效的,例如在无地图驱动器上。

IOException

文件已经开放了。

CreateEntry(字符串, 流, ArchiveEntrySettings, FileSystemInfo)

在档案中创建一个单一输入。

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)

Parameters

name string

入口的名称。

source Stream

输入流的输入流。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。

fileInfo FileSystemInfo

要压缩的文件或文件夹的代码。

Returns

ArchiveEntry

Zip 入口。

Examples

编写存档与加密输入。

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF} ), new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")), new FileInfo("data1.bin")); 
        archive.Save(zipFile);
    }
}

Remarks

输入名单仅在参数中设置,参数中提供的文件名不影响输入名单。

可以提到 System.IO.DirectoryInfo 如果输入是目录。

Exceptions

InvalidOperationException

source’ and fileInfo’ are null or source’ is null and fileInfo’ stands for directory。

CreateEntry(字符串, Func, 關於 ArchiveEntrySettings)

在档案中创建一个单一输入。

public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)

Parameters

name string

入口的名称。

streamProvider Func < Stream >

方法提供输入流的输入。

newEntrySettings ArchiveEntrySettings

压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。

Returns

ArchiveEntry

Zip 入口。

Examples

编写存档与加密输入。

System.Func&lt;Stream&gt; provider = delegate(){ return new MemoryStream(new byte[]{0xFF, 0x00}); };
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", provider, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")))); 
        archive.Save(zipFile);
    }
}

Remarks

此方法适用于 .NET Framework 4.0 或更高版本,以及 .NET Standard 2.0 版本。

DeleteEntry(ArchiveEntry)

从输入列表中删除具体输入的第一次出现。

public Archive DeleteEntry(ArchiveEntry entry)

Parameters

entry ArchiveEntry

输入要从输入列表中删除。

Returns

Archive

包含输入的档案已删除。

Examples

下面是如何删除所有输入,除了最后一个:

using (var archive = new Archive("archive.zip"))
{
    while (archive.Entries.Count &gt; 1)
        archive.DeleteEntry(archive.Entries[0]);
    archive.Save("last_entry.zip");
}

Exceptions

ObjectDisposedException

档案被解除。

DeleteEntry(因特)

按指数从输入列表中删除输入。

public Archive DeleteEntry(int entryIndex)

Parameters

entryIndex int

以零为基础的输入指数要删除。

Returns

Archive

包含输入的档案已删除。

Examples

using (var archive = new TarArchive("two_files.zip"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.zip");
}

Exceptions

ObjectDisposedException

档案已解除。

ArgumentOutOfRangeException

entryIndex’ is less than 0.-or- entryIndex’ is equal to or greater than ‘Entries’ count.

Dispose()

执行与释放、释放或重新管理未管理资源相关的应用定义任务。

public void Dispose()

Dispose(博尔)

执行与释放、释放或重新管理未管理资源相关的应用定义任务。

protected virtual void Dispose(bool disposing)

Parameters

disposing bool

管理的资源是否要消耗?

ExtractToDirectory(线条)

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

public void ExtractToDirectory(string destinationDirectory)

Parameters

destinationDirectory string

路径到目录将提取的文件插入。

Examples

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

Remarks

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

Exceptions

ArgumentNullException

destinationDirectory’ is null.

PathTooLongException

例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。

SecurityException

呼叫者没有必要的许可访问现有目录。

NotSupportedException

如果目录不存在,路径包含一个列符(:)不属于驱动标签(“C:”)的一部分。

ArgumentException

destinationDirectory’ is a zero-length string, contains only white space, or contains one or more invalid characters. You can query for invalid characters by using the System.IO.Path.GetInvalidPathChars method.-or- path is prefixed with, or contains, only a colon character (:).

IOException

路径指定的目录是一个文件. -or- 网络名称不明。

InvalidDataException

错误的密码已提供 - 或 - 档案被破坏。

Save(流量, ArchiveSaveOptions)

存储存档到提供的流量。

public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)

Parameters

outputStream Stream

目的地流

saveOptions ArchiveSaveOptions

存储档案的选项。

Examples

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry.bin", "data.bin");
        archive.Save(zipFile);
    }
}

Remarks

必须是可写的。

Exceptions

ArgumentException

outputStream’ is not writable.

ObjectDisposedException

档案被解除。

Save(字符串, ArchiveSaveOptions)

存储到所提供的目的地文件的档案。

public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)

Parameters

destinationFileName string

要创建档案的路径 如果指定的文件名指向现有文件,则将重写。

saveOptions ArchiveSaveOptions

存储档案的选项。

Examples

using (var archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.Save("archive.zip",  new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}

Remarks

可以将档案存储到它从下载的同一条路径,但是,这并不建议,因为这种方法使用复制到临时文件。

Exceptions

ArgumentNullException

destinationFileName’ is null.

SecurityException

召唤者没有所需的访问许可。

ArgumentException

destinationFileName’ 是空的,只包含白色空间,或包含无效的字符。

UnauthorizedAccessException

拒绝访问 destinationFileName’ 文件。

PathTooLongException

指定的 destinationFileName’, 文件名, 或两者都超过系统定义的最大长度. 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。

NotSupportedException

文件在 destinationFileName’ 包含字符串中间的一个列(:)。

FileNotFoundException

文件未找到。

DirectoryNotFoundException

指定的路径是无效的,例如在无地图驱动器上。

IOException

文件已经开放了。

SaveSplit(字符串, SplitArchiveSaveOptions)

存储多容量档案到提供的目的地目录。

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parameters

destinationDirectory string

路径到要创建档案部分的目录。

options SplitArchiveSaveOptions

存储档案的选项,包括文件名。

Examples

using (Archive archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.SaveSplit(@"C:\Folder",  new SplitArchiveSaveOptions("volume", 65536));
}

Remarks

此方法由多个( )文件组成 filename.z01, filename.z02, …, filename.z(n-1), filename.zip。

无法创建现有档案多容量。

Exceptions

InvalidOperationException

此档案从现有来源打开。

NotSupportedException

此档案既用 XZ 方法压缩,又加密。

ArgumentNullException

destinationDirectory’ is null.

SecurityException

召唤者没有必要的许可访问目录。

ArgumentException

destinationDirectory’ contains invalid characters such as “, >, <, or |.

PathTooLongException

指定的路径超过系统定义的最大长度。

ObjectDisposedException

档案被解除。

 中文