非常教程

Ruby 2.4参考手册

Zlib

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

Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。

主页 https://www.ruby-lang.org/
源码 https://github.com/ruby/ruby
版本 2.4
发布版本 2.4.1

Ruby 2.4目录

1.缩略 | Abbrev
2.ARGF
3.数组 | Array
4.Base64
5.基本对象 | BasicObject
6.基准测试 | Benchmark
7.BigDecimal
8.绑定 | Binding
9.CGI
10.类 | Class
11.比较 | Comparable
12.负责 | Complex
13.计算续体 | Continuation
14.覆盖 | Coverage
15.CSV
16.日期 | Date
17.日期时间 | DateTime
18.DBM
19.代理 | Delegator
20.摘要 | Digest
21.Dir
22.DRb
23.编码 | Encoding
24.枚举 | Enumerable
25.枚举 | Enumerator
26.ENV
27.ERB
28.错误 | Errors
29.Etc
30.期望值 | Exception
31.错误类 | FalseClass
32.Fiber
33.Fiddle
34.文件 | File
35.文件实用程序 | FileUtils
36.查找 | Find
37.浮点 | Float
38.Forwardable
39.GC
40.GDBM
41.GetoptLong
42.Hash
43.Integer
44.IO
45.IPAddr
46.JSON
47.Kernel
48.语言 | 3Language
49.记录 | Logger
50.编排 | Marshal
51.MatchData
52.数学 | Math
53.矩阵 | Matrix
54.方法 | Method
55.模型 | Module
56.监控 | Monitor
57. 互斥 | Mutex
58.Net
59.Net::FTP
60.Net::HTTP
61.Net::IMAP
62.Net::SMTP
63.NilClass
64.数字 | Numeric
65.对象 | Object
66.ObjectSpace
67.Observable
68.Open3
69.OpenSSL
70.OpenStruct
71.OpenURI
72.OptionParser
73.路径名 | Pathname
74.完整输出 | PrettyPrint
75.Prime
76.Proc
77.过程 | Process
78.PStore
79.PTY
80.队列 | Queue
81.随机 | Random
82.范围 | Range
83.合理的 | Rational
84.Readline
85.Regexp
86.Resolv
87.Ripper
88.RubyVM
89.Scanf
90.SDBM
91.SecureRandom
92.Set
93.Shell
94.信号 | Signal
95.Singleton
96.套接字 | Socket
97.字符串 | String
98.StringIO
99.StringScanner
100.结构 | Struct