Class Archive
名称: Aspose.Zip 收藏: Aspose.Zip.dll (25.5.0)
此类代表一个 zip 档案文件. 使用它来编写、提取或更新 ZIP 文件。
public class Archive : IArchive, IDisposable
Inheritance
Implements
继承人
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
sourceStream’ is not seekable.
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
path’ is null.
召唤者没有所需的访问许可。
path’ 是空的,只包含白色空间,或包含无效的字符。
拒绝访问 path" 文件。
指定的 path’, 文件名, 或两者都超过系统定义的最大长度. 例如,在基于 Windows 的平台上,路径必须小于 248 个字符, 文件名必须小于 260 个字符。
文件在 path’ 中间包含一个列(:)。
文件未找到。
指定的路径是无效的,例如在无地图驱动器上。
文件已经开放了。
文件是腐败的。
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
不能加载 ZIP 标题,因为提供的文件是腐败的。
Properties
Entries
收到 Aspose.Zip.ArchiveEntry 类型的输入,构成档案。
public ReadOnlyCollection<archiveentry> Entries { get; }
财产价值
ReadOnlyCollection < ArchiveEntry >
NewEntrySettings
压缩和加密设置用于新添加的 Aspose.Zip.ArchiveEntry 项目。
public ArchiveEntrySettings NewEntrySettings { get; }
财产价值
Methods
CreateEntries(首页 > 博尔)
将所有文件和目录重复添加到存档中。
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Parameters
directory
DirectoryInfo
编辑器压缩。
includeRootDirectory
bool
指示是否要包含根目录本身。
Returns
编写的存档与输入。
Examples
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Exceptions
通往 directory’ 的路径是无效的,例如在无地图驱动器上。
通话者没有必要的许可访问 directory。
CreateEntries(布尔,布尔)
将所有文件和目录重复添加到存档中。
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Parameters
sourceDirectory
string
编辑器压缩。
includeRootDirectory
bool
指示是否要包含根目录本身。
Returns
编写的存档与输入。
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
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
path’ is null.
召唤者没有所需的访问许可。
path’ 是空的,只包含白色空间,或包含无效的字符。
拒绝访问 path" 文件。
指定的 path’, 文件名, 或两者都超过系统定义的最大长度. 例如,在基于 Windows 的平台上,路径必须小于 248 个字符, 文件名必须小于 260 个字符。
文件在 path’ 中间包含一个列(:)。
CreateEntry(字符串, 流, ArchiveEntrySettings)
在档案中创建一个单一输入。
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)
Parameters
name
string
入口的名称。
source
Stream
输入流的输入流。
newEntrySettings
ArchiveEntrySettings
压缩和加密设置用于添加 Aspose.Zip.ArchiveEntry 项目。
Returns
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
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
fileInfo’ is read-only or is a directory.
指定的路径是无效的,例如在无地图驱动器上。
文件已经开放了。
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
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
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
Zip 入口。
Examples
编写存档与加密输入。
System.Func<Stream> 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
包含输入的档案已删除。
Examples
下面是如何删除所有输入,除了最后一个:
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Exceptions
档案被解除。
DeleteEntry(因特)
按指数从输入列表中删除输入。
public Archive DeleteEntry(int entryIndex)
Parameters
entryIndex
int
以零为基础的输入指数要删除。
Returns
包含输入的档案已删除。
Examples
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Exceptions
档案已解除。
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
destinationDirectory’ is null.
例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。
呼叫者没有必要的许可访问现有目录。
如果目录不存在,路径包含一个列符(:)不属于驱动标签(“C:”)的一部分。
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 (:).
路径指定的目录是一个文件. -or- 网络名称不明。
错误的密码已提供 - 或 - 档案被破坏。
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
outputStream’ is not writable.
档案被解除。
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
destinationFileName’ is null.
召唤者没有所需的访问许可。
destinationFileName’ 是空的,只包含白色空间,或包含无效的字符。
拒绝访问 destinationFileName’ 文件。
指定的 destinationFileName’, 文件名, 或两者都超过系统定义的最大长度. 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。
文件在 destinationFileName’ 包含字符串中间的一个列(:)。
文件未找到。
指定的路径是无效的,例如在无地图驱动器上。
文件已经开放了。
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
此档案从现有来源打开。
此档案既用 XZ 方法压缩,又加密。
destinationDirectory’ is null.
召唤者没有必要的许可访问目录。
destinationDirectory’ contains invalid characters such as “, >, <, or |.
指定的路径超过系统定义的最大长度。
档案被解除。