Class Bzip2Archive
Namespace: Aspose.Zip.Bzip2
Assembly: Aspose.Zip.dll (25.1.0)
此类表示bzip2归档文件。使用它来组成或提取bzip2归档。
public class Bzip2Archive : IArchive, IDisposable, IArchiveFileEntry
继承
实现
IArchive, IDisposable, IArchiveFileEntry
继承的成员
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
备注
bzip2使用Burrows-Wheeler块排序文本压缩算法和哈夫曼编码来压缩文件。更多信息见:https://en.wikipedia.org/wiki/Bzip2
构造函数
Bzip2Archive()
初始化一个新的Aspose.Zip.Bzip2.Bzip2Archive类的实例,准备进行压缩。
public Bzip2Archive()
示例
以下示例演示如何压缩文件。
using (Bzip2Archive archive = new Bzip2Archive())
{
archive.SetSource("data.bin");
archive.Save("archive.bz2");
}
Bzip2Archive(Stream, Bzip2LoadOptions)
初始化一个新的Aspose.Zip.Bzip2.Bzip2Archive类的实例,准备进行解压缩。
public Bzip2Archive(Stream sourceStream, Bzip2LoadOptions loadOptions = null)
参数
sourceStream
Stream
归档的来源。
loadOptions
Bzip2LoadOptions
加载归档的选项。
示例
从流中打开归档并提取到MemoryStream
var ms = new MemoryStream();
using (Bzip2Archive archive = new Bzip2Archive(File.OpenRead("archive.bz2")))
archive.Open().CopyTo(ms);
备注
此构造函数不进行解压缩。有关解压缩的请参见Aspose.Zip.Bzip2.Bzip2Archive.Open方法。
Bzip2Archive(string, Bzip2LoadOptions)
初始化一个新的Aspose.Zip.Bzip2.Bzip2Archive类的实例,准备进行解压缩。
public Bzip2Archive(string path, Bzip2LoadOptions loadOptions = null)
参数
path
string
归档文件的路径。
loadOptions
Bzip2LoadOptions
加载归档的选项。
示例
通过路径从文件中打开归档并提取到MemoryStream
var ms = new MemoryStream();
using (Bzip2Archive archive = new Bzip2Archive("archive.bz2"))
archive.Open().CopyTo(ms);
备注
此构造函数不进行解压缩。有关解压缩的请参见Aspose.Zip.Bzip2.Bzip2Archive.Open方法。
异常
path
为null。
调用者没有访问所需权限。
path
为空,仅包含空格或包含无效字符。
访问文件path
被拒绝。
指定的path
、文件名或两者超出了系统定义的最大长度。例如,在基于Windows的平台上,路径必须少于248个字符,文件名必须少于260个字符。
path
中间包含冒号(:)。
未找到文件。
指定的路径无效,例如位于未映射的驱动器上。
文件已打开。
方法
Dispose()
执行与释放、释放或重置非托管资源相关的应用程序定义任务。
public void Dispose()
Dispose(bool)
执行与释放、释放或重置非托管资源相关的应用程序定义任务。
protected virtual void Dispose(bool disposing)
参数
disposing
bool
是否应释放托管资源。
Extract(Stream)
将归档提取到提供的流中。
public void Extract(Stream destination)
参数
destination
Stream
目标流。必须可写。
示例
using (Bzip2Archive archive = new Bzip2Archive("archive.bz2"))
{
archive.Extract(httpResponseStream);
}
异常
destination
不支持写入。
Extract(string)
将归档提取到指定路径的文件中。
public FileInfo Extract(string path)
参数
path
string
目标文件的路径。如果文件已存在,将被覆盖。
返回
提取文件的信息。
异常
path
为null。
调用者没有访问所需权限。
path
为空,仅包含空格或包含无效字符。
访问文件path
被拒绝。
指定的path
、文件名或两者超出了系统定义的最大长度。例如,在基于Windows的平台上,路径必须少于248个字符,文件名必须少于260个字符。
文件在path
中间包含冒号(:)。
未找到文件。
指定的路径无效,例如位于未映射的驱动器上。
文件已打开。
ExtractToDirectory(string)
将归档的内容提取到提供的目录中。
public void ExtractToDirectory(string destinationDirectory)
参数
destinationDirectory
string
提取文件的目录路径。
备注
如果目录不存在,将被创建。
异常
destinationDirectory
为null。
指定的路径、文件名或两者超出了系统定义的最大长度。例如,在基于Windows的平台上,路径必须少于248个字符,文件名必须少于260个字符。
调用者没有访问现有目录的所需权限。
如果目录不存在,路径包含不是驱动器标签(“C:")的一部分的冒号字符(:)。
destinationDirectory
是零长度字符串,仅包含空格或包含一个或多个无效字符。您可以使用System.IO.Path.GetInvalidPathChars方法查询无效字符。
-或- 路径以仅包含冒号字符(:)为前缀或包含。
指定路径的目录是文件。-或- 网络名称未知。
Open()
打开归档以进行提取,并提供包含归档内容的流。
public Stream Open()
返回
表示归档内容的流。
示例
用法:
Stream decompressed = archive.Open();
.NET 4.0及更高版本 - 使用Stream.CopyTo方法:
decompressed.CopyTo(httpResponse.OutputStream)
.NET 3.5及之前 - 手动复制字节:
byte[] buffer = new byte[8192];
int bytesRead;
while (0 < (bytesRead = decompressed.Read(buffer, 0, buffer.Length)))
fileStream.Write(buffer, 0, bytesRead);
```</p>
#### 备注
从流中读取以获取文件的原始内容。请参见示例部分。
### <a id="Aspose_Zip_Bzip2_Bzip2Archive_Save_System_IO_Stream_Aspose_Zip_Bzip2_Bzip2SaveOptions_"></a> Save\(Stream, Bzip2SaveOptions\)
将归档保存到提供的流中。
```csharp
public void Save(Stream outputStream, Bzip2SaveOptions saveOptions = null)
参数
outputStream
Stream
目标流。
saveOptions
Bzip2SaveOptions
保存bzip2归档的选项。如果未指定,将使用900 Kb块大小。
示例
将压缩数据写入http响应流。
using (var archive = new Bzip2Archive())
{
archive.SetSource(new FileInfo("data.bin"));
archive.Save(httpResponse.OutputStream);
}
备注
outputStream
必须可写。
异常
要归档的数据源未提供。
outputStream
不是可写的。
文件源是只读的或是目录。
指定的文件源路径无效,例如位于未映射的驱动器上。
文件源已打开。
Save(string, Bzip2SaveOptions)
将归档保存到提供的目标文件中。
public void Save(string destinationFileName, Bzip2SaveOptions saveOptions = null)
参数
destinationFileName
string
要创建的归档的路径。如果指定的文件名指向现有文件,将被覆盖。
saveOptions
Bzip2SaveOptions
保存bzip2归档的选项。如果未指定,将使用900 Kb块大小。
示例
将压缩数据写入文件。
using (var archive = new Bzip2Archive())
{
archive.SetSource(new FileInfo("data.bin"));
archive.Save("data.bz2");
}
异常
destinationFileName
为null。
调用者没有访问所需权限。
destinationFileName
为空,仅包含空格或包含无效字符。
访问文件destinationFileName
被拒绝。
指定的destinationFileName
、文件名或两者超出了系统定义的最大长度。例如,在基于Windows的平台上,路径必须少于248个字符,文件名必须少于260个字符。
文件在destinationFileName
中间包含冒号(:)。
SetSource(Stream)
设置要在归档中压缩的内容。
public void SetSource(Stream source)
参数
source
Stream
归档的输入流。
示例
using (Bzip2Archive archive = new Bzip2Archive())
{
archive.SetSource(new MemoryStream(new byte[] { 0x00,0xFF }));
archive.Save("archive.bz2");
}
SetSource(FileInfo)
设置要在归档中压缩的内容。
public void SetSource(FileInfo fileInfo)
参数
fileInfo
FileInfo
要压缩的文件的引用。
示例
using (Bzip2Archive archive = new Bzip2Archive())
{
archive.SetSource(new FileInfo("data.bin"));
archive.Save("archive.bz2");
}
SetSource(string)
设置要在归档中压缩的内容。
public void SetSource(string path)
参数
path
string
要压缩的文件的路径。
示例
using (Bzip2Archive archive = new Bzip2Archive())
{
archive.SetSource("data.bin");
archive.Save("archive.bz2");
}
异常
path
为null。
调用者没有访问所需权限。
path
为空,仅包含空格或包含无效字符。
访问文件path
被拒绝。
指定的path
、文件名或两者超出了系统定义的最大长度。例如,在基于Windows的平台上,路径必须少于248个字符,文件名必须少于260个字符。
文件在path
中间包含冒号(:)。
SetSource(TarArchive, TarFormat)
设置要在归档中压缩的内容。
public void SetSource(TarArchive tarArchive, TarFormat format = TarFormat.UsTar)
参数
tarArchive
TarArchive
要压缩的Tar归档。
format
TarFormat
定义tar头格式。
示例
using (var tarArchive = new TarArchive())
{
tarArchive.CreateEntry("first.bin", "data1.bin");
tarArchive.CreateEntry("second.bin", "data2.bin");
using (var bzippedArchive = new Bzip2Archive())
{
bzippedArchive.SetSource(tarArchive);
bzippedArchive.Save("archive.tar.bz2");
}
}
备注
使用此方法组成联合tar.bz2归档。
SetSource(CpioArchive, CpioFormat)
设置要在归档中压缩的内容。
public void SetSource(CpioArchive cpioArchive, CpioFormat format = CpioFormat.OldAscii)
参数
cpioArchive
CpioArchive
要压缩的Cpio归档。
format
CpioFormat
定义cpio头格式。
示例
using (var cpioArchive = new CpioArchive())
{
cpioArchive.CreateEntry("first.bin", "data1.bin");
cpioArchive.CreateEntry("second.bin", "data2.bin");
using (var bzippedArchive = new Bzip2Archive())
{
bzippedArchive.SetSource(cpioArchive);
bzippedArchive.Save("archive.cpio.bz2");
}
}
备注
使用此方法组成联合cpio.bz2归档。