class Zlib::GzipFile
Zlib::GzipFile 是一个用于处理 gzip 格式压缩文件的抽象类。操作在子类中定义,Zlib::GzipReader 用于读取,Zlib::GzipWriter 用于写入。
GzipReader 应通过关联一个 IO 对象或类 IO 对象来使用。
方法目录
-
::open (
Zlib::GzipReader::open和Zlib::GzipWriter::open) -
comment= (
Zlib::GzipWriter#comment=) -
eof? (
Zlib::GzipReader#eof?) -
lineno (
Zlib::GzipReader#lineno) -
lineno= (
Zlib::GzipReader#lineno=) -
mtime= (
Zlib::GzipWriter#mtime=) -
path (当底层
IO对象支持 path 时)
(由于内部结构,文档可能出现在 Zlib::GzipReader 或 Zlib::GzipWriter 下)
Public Class Methods
Source
static VALUE
rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
{
return gzfile_wrap(argc, argv, klass, 0);
}
创建一个与 io 关联的 GzipReader 或 GzipWriter,传入任何必要的额外选项,并像 File.open 一样,使用新创建的对象执行块。
该 GzipFile 对象将在执行完块后自动关闭。如果你想保持关联的 IO 对象打开,可以在块中调用 Zlib::GzipFile#finish 方法。
Public Instance Methods
Source
static VALUE
rb_gzfile_close(VALUE obj)
{
struct gzfile *gz;
VALUE io;
TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz);
if (!ZSTREAM_IS_READY(&gz->z)) {
return Qnil;
}
io = gz->io;
gzfile_close(gz, 1);
return io;
}
Source
static VALUE
rb_gzfile_closed_p(VALUE obj)
{
struct gzfile *gz;
TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz);
return NIL_P(gz->io) ? Qtrue : Qfalse;
}
与 IO#closed? 相同
Source
static VALUE
rb_gzfile_comment(VALUE obj)
{
VALUE str = get_gzfile(obj)->comment;
if (!NIL_P(str)) {
str = rb_str_dup(str);
}
return str;
}
返回 gzip 文件头中记录的注释,如果注释不存在则返回 nil。
Source
static VALUE
rb_gzfile_crc(VALUE obj)
{
return rb_uint2inum(get_gzfile(obj)->crc);
}
返回未压缩数据的 CRC 值。
Source
static VALUE
rb_gzfile_finish(VALUE obj)
{
struct gzfile *gz = get_gzfile(obj);
VALUE io;
io = gz->io;
gzfile_close(gz, 0);
return io;
}
关闭 GzipFile 对象。与 Zlib::GzipFile#close 不同,此方法永远不会调用关联的 IO 对象的 close 方法。返回关联的 IO 对象。
Source
static VALUE
rb_gzfile_level(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->level);
}
返回压缩级别。
Source
static VALUE
rb_gzfile_mtime(VALUE obj)
{
return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
}
返回 gzip 文件头中记录的最后修改时间。
Source
static VALUE
rb_gzfile_orig_name(VALUE obj)
{
VALUE str = get_gzfile(obj)->orig_name;
if (!NIL_P(str)) {
str = rb_str_dup(str);
}
return str;
}
返回 gzip 文件头中记录的原始文件名,如果原始文件名不存在则返回 nil。
Source
static VALUE
rb_gzfile_os_code(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->os_code);
}
返回 gzip 文件头中记录的 OS 代码号。
Source
static VALUE
rb_gzfile_sync(VALUE obj)
{
return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
}
与 IO#sync 相同
Source
static VALUE
rb_gzfile_set_sync(VALUE obj, VALUE mode)
{
struct gzfile *gz = get_gzfile(obj);
if (RTEST(mode)) {
gz->z.flags |= GZFILE_FLAG_SYNC;
}
else {
gz->z.flags &= ~GZFILE_FLAG_SYNC;
}
return mode;
}