Compress::Raw::Bzip2 - bzip2 压缩库的低级接口
use Compress::Raw::Bzip2 ;
my ($bz, $status) = new Compress::Raw::Bzip2 [OPTS]
or die "Cannot create bzip2 object: $bzerno\n";
$status = $bz->bzdeflate($input, $output);
$status = $bz->bzflush($output);
$status = $bz->bzclose($output);
my ($bz, $status) = new Compress::Raw::Bunzip2 [OPTS]
or die "Cannot create bunzip2 object: $bzerno\n";
$status = $bz->bzinflate($input, $output);
my $version = Compress::Raw::Bzip2::bzlibversion();
Compress::Raw::Bzip2
提供了对 bzip2 压缩库中内存压缩/解压缩函数的接口。
虽然 Compress::Raw::Bzip2
的主要存在目的是供 IO::Compress::Bzip2
和 IO::Compress::Bunzip2
模块使用,但它也可以单独用于简单的压缩/解压缩任务。
创建一个新的压缩对象。
如果成功,它将在列表上下文中返回初始化的压缩对象 $z
和 $status
为 BZ_OK
。在标量上下文中,它只返回解压缩对象 $z
。
如果失败,返回的压缩对象 $z
将为 undef,而 $status
将包含 bzip2 错误代码。
以下是有效选项的列表
控制压缩数据是否在 bzdeflate
、bzflush
和 bzclose
方法中追加到输出缓冲区。
默认为 1。
引用 bzip2 文档
blockSize100k specifies the block size to be used for compression. It
should be a value between 1 and 9 inclusive, and the actual block size
used is 100000 x this figure. 9 gives the best compression but takes
most memory.
默认为 1。
引用 bzip2 文档
This parameter controls how the compression phase behaves when
presented with worst case, highly repetitive, input data. If
compression runs into difficulties caused by repetitive data, the
library switches from the standard sorting algorithm to a fallback
algorithm. The fallback is slower than the standard algorithm by
perhaps a factor of three, but always behaves reasonably, no matter how
bad the input.
Lower values of workFactor reduce the amount of effort the standard
algorithm will expend before resorting to the fallback. You should set
this parameter carefully; too low, and many inputs will be handled by
the fallback algorithm and so compress rather slowly, too high, and
your average-to-worst case compression times can become very large. The
default value of 30 gives reasonable behaviour over a wide range of
circumstances.
Allowable values range from 0 to 250 inclusive. 0 is a special case,
equivalent to using the default value of 30.
默认为 0。
读取 $input
的内容,压缩它并将压缩后的数据写入 $output
。
成功时返回 BZ_RUN_OK
,失败时返回 bzip2
错误代码。
如果在 bzip2 对象的构造函数中启用了 appendOutput
,则压缩后的数据将追加到 $output
。如果未启用,则在将压缩后的数据写入 $output
之前,$output
将被截断。
将任何待处理的压缩数据刷新到 $output
。
成功时返回 BZ_RUN_OK
,失败时返回 bzip2
错误代码。
终止压缩数据流并将任何待处理的压缩数据刷新到 $output
。
成功时返回 BZ_STREAM_END
,失败时返回 bzip2
错误代码。
如果成功,它将在列表上下文中返回初始化的解压缩对象 $z
和 $status
为 BZ_OK
。在标量上下文中,它只返回解压缩对象 $z
。
如果失败,返回的解压缩对象 $z
将为 undef,而 $status
将包含 bzip2 错误代码。
以下是有效选项的列表
控制压缩数据是否在 bzinflate
、bzflush
和 bzclose
方法中追加到输出缓冲区。
默认为 1。
引用 bzip2 文档
If small is nonzero, the library will use an alternative decompression
algorithm which uses less memory but at the cost of decompressing more
slowly (roughly speaking, half the speed, but the maximum memory
requirement drops to around 2300k).
默认为 0。
LimitOutput
选项更改 $i->bzinflate
方法的行为,以便可以限制输出缓冲区使用的内存量。
当使用 LimitOutput
时,使用的输出缓冲区的大小将是 16k 或已分配给 $output
的内存量,以较大者为准。预测可用的输出大小很棘手,因此不要依赖于获得确切的输出缓冲区大小。
如果未指定 LimitOutout
,$i->bzinflate
将使用尽可能多的内存来写入解压缩输入缓冲区时创建的所有未压缩数据。
如果启用了 LimitOutput
,则 ConsumeInput
选项也将被启用。
此选项默认值为 false。
此参数被忽略。
默认为 0。
解压缩 $input
并将未压缩数据写入 $output
。
如果解压缩成功,但未到达压缩数据流的末尾,则返回 BZ_OK
。如果解压缩成功且已到达压缩流的末尾,则返回 BZ_STREAM_END
。
如果在 bunzip2 对象的构造函数中启用了 consumeInput
,则 $input
将在解压缩后删除所有压缩数据。在 BZ_OK
返回时,这意味着 $input
将是一个空字符串;当 BZ_STREAM_END
时,$input
将是一个空字符串,或者包含紧随压缩数据流之后的任何数据。
如果在 bunzip2 对象的构造函数中启用了 appendOutput
,则未压缩数据将追加到 $output
。如果未启用,则在将未压缩数据写入 $output
之前,$output
将被截断。
返回底层 bzip2 库的版本。
此模块导出以下 bzip2 常量
BZ_RUN
BZ_FLUSH
BZ_FINISH
BZ_OK
BZ_RUN_OK
BZ_FLUSH_OK
BZ_FINISH_OK
BZ_STREAM_END
BZ_SEQUENCE_ERROR
BZ_PARAM_ERROR
BZ_MEM_ERROR
BZ_DATA_ERROR
BZ_DATA_ERROR_MAGIC
BZ_IO_ERROR
BZ_UNEXPECTED_EOF
BZ_OUTBUFF_FULL
BZ_CONFIG_ERROR
一般反馈/问题/错误报告应发送到 https://github.com/pmqs/Compress-Raw-Bzip2/issues(优先)或 https://rt.cpan.org/Public/Dist/Display.html?Name=Compress-Raw-Bzip2。
Compress::Zlib,IO::Compress::Gzip,IO::Uncompress::Gunzip,IO::Compress::Deflate,IO::Uncompress::Inflate,IO::Compress::RawDeflate,IO::Uncompress::RawInflate,IO::Compress::Bzip2,IO::Uncompress::Bunzip2,IO::Compress::Lzma,IO::Uncompress::UnLzma,IO::Compress::Xz,IO::Uncompress::UnXz,IO::Compress::Lzip,IO::Uncompress::UnLzip,IO::Compress::Lzop,IO::Uncompress::UnLzop,IO::Compress::Lzf,IO::Uncompress::UnLzf,IO::Compress::Zstd,IO::Uncompress::UnZstd,IO::Uncompress::AnyInflate,IO::Uncompress::AnyUncompress
File::GlobMapper,Archive::Zip,Archive::Tar,IO::Zlib
bzip2 程序的主要站点是 https://sourceware.org/bzip2/。
参见模块 Compress::Bzip2
此模块由 Paul Marquess 编写,[email protected]
。
参见 Changes 文件。
版权所有 (c) 2005-2023 Paul Marquess。保留所有权利。
本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。