Ruby 2.4

Zlib::GzipFile

class Zlib::GzipFile

Parent:Object

Zlib :: GzipFile 是用于处理 gzip 格式的压缩文件的抽象类。这些操作在子类中定义,用于读取的 Zlib :: GzipReader 以及用于写入的 Zlib :: GzipWriter。

通过关联一个 IO 或类似 IO 的对象来使用 GzipReader。

方法目录

  • ::wrap

  • Kernel.open (Zlib::GzipReader::open and Zlib::GzipWriter.open)

  • close

  • closed?

  • comment

  • comment= (Zlib::GzipWriter#comment=)

  • crc

  • eof? (Zlib::GzipReader#eof?)

  • finish

  • level

  • lineno (Zlib::GzipReader#lineno)

  • lineno= (Zlib::GzipReader#lineno=)

  • mtime

  • mtime= (Zlib::GzipWriter#mtime=)

  • orig_name

  • #orig_name (Zlib::GzipWriter#orig_name=)

  • os_code

  • path(当底层 IO 支持路径时)

  • sync

  • sync=

  • to_io

(由于内部结构,文档可能出现在 Zlib :: GzipReader 或 Zlib :: GzipWriter 下)

公共类方法

Zlib::GzipReader.wrap(io, ...) { |gz| ... } Show source

Zlib::GzipWriter.wrap(io, ...) { |gz| ... }

创建与之关联的 GzipReader 或 GzipWriter io,传入任何必需的额外选项,并使用新创建的对象执行块,就像 File.open 一样。

执行该块后,GzipFile 对象将自动关闭。如果你想保持关联的 IO 对象打开,你可以调用 #finish 方法。

static VALUE rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass) { return gzfile_wrap(argc, argv, klass, 0 }

公共实例方法

close() Show source

关闭 GzipFile 对象。此方法调用关联的 IO 对象的 close 方法。返回关联的 IO 对象。

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; }

closed?() Show source

与 IO#关闭一样?

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; }

comment() Show source

返回记录在 gzip 文件头中的注释,如果注释不存在,则返回 nil。

static VALUE rb_gzfile_comment(VALUE obj) { VALUE str = get_gzfile(obj)->comment; if (!NIL_P(str)) { str = rb_str_dup(str } OBJ_TAINT(str /* for safe */ return str; }

crc() Show source

返回未压缩数据的 CRC 值。

static VALUE rb_gzfile_crc(VALUE obj) { return rb_uint2inum(get_gzfile(obj)->crc }

finish() Show source

关闭 GzipFile 对象。与#close 不同,此方法从不调用关联 IO 对象的 close 方法。返回关联的 IO 对象。

static VALUE rb_gzfile_finish(VALUE obj) { struct gzfile *gz = get_gzfile(obj VALUE io; io = gz->io; gzfile_close(gz, 0 return io; }

level() Show source

返回压缩级别。

static VALUE rb_gzfile_level(VALUE obj) { return INT2FIX(get_gzfile(obj)->level }

mtime() Show source

返回记录在 gzip 文件头中的上次修改时间。

static VALUE rb_gzfile_mtime(VALUE obj) { return rb_time_new(get_gzfile(obj)->mtime, (time_t)0 }

orig_name() Show source

返回记录在 gzip 文件头中的nil原始文件名,或者原始文件名不存在。

static VALUE rb_gzfile_orig_name(VALUE obj) { VALUE str = get_gzfile(obj)->orig_name; if (!NIL_P(str)) { str = rb_str_dup(str } OBJ_TAINT(str /* for safe */ return str; }

os_code() Show source

返回记录在 gzip 文件头中的 OS 代码号。

static VALUE rb_gzfile_os_code(VALUE obj) { return INT2FIX(get_gzfile(obj)->os_code }

sync() Show source

与 IO#同步相同

static VALUE rb_gzfile_sync(VALUE obj) { return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse; }

sync = flag Show source

与 IO 相同。如果标志是true,则关联的 IO对象必须响应该flush方法。虽然sync模式是true,压缩比急剧下降。

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; }

to_io() Show source

与 IO 相同。

static VALUE rb_gzfile_to_io(VALUE obj) { return get_gzfile(obj)->io; }