Spec-Zone.ru › Ruby 3.2

класс Zlib::GzipFile

Родитель:
Объект

Zlib::GzipFile — это абстрактный класс для обработки сжатых файлов в формате gzip. Операции определены в подклассах, Zlib::GzipReader для чтения и Zlib::GzipWriter для записи.

GzipReader следует использовать, связав его с объектом IO или похожим на IO.

Method Каталог

  • ::wrap

  • ::open (Zlib::GzipReader::open и 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

  • путь (если базовое IO поддерживает путь)

  • sync

  • sync=

  • to_io

(из-за внутренней структуры, документация может отображаться в Zlib::GzipReader или Zlib::GzipWriter)

Общедоступные методы класса

Zlib::GzipReader.wrap(io, ...) { |gz| ... } Показать исходный код
Zlib::GzipWriter.wrap(io, ...) { |gz| ... }
static VALUE
rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
{
    return gzfile_wrap(argc, argv, klass, 0);
}

Создает GzipReader или GzipWriter, связанный с io, передавая любые необходимые дополнительные параметры и выполняет блок с вновь созданным объектом, так же как и File.open.

Объект GzipFile будет закрыт автоматически после выполнения блока. Если вы хотите сохранить связанный объект IO открытым, вы можете вызвать метод Zlib::GzipFile#finish в блоке.

Общедоступные методы экземпляра

close() Показать исходный код
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;
}

Закрывает объект GzipFile. Этот метод вызывает метод close связанного объекта IO. Возвращает связанный объект IO.

closed?() Показать исходный код
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?

comment() Показать исходный код
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, если комментарии отсутствуют.

crc() Показать исходный код
static VALUE
rb_gzfile_crc(VALUE obj)
{
    return rb_uint2inum(get_gzfile(obj)->crc);
}

Возвращает значение CRC несжатых данных.

finish() Показать исходный код
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, этот метод никогда не вызывает метод close связанного объекта IO. Возвращает связанный объект IO.

level() Показать исходный код
static VALUE
rb_gzfile_level(VALUE obj)
{
    return INT2FIX(get_gzfile(obj)->level);
}

Возвращает уровень сжатия.

mtime() Показать исходный код
static VALUE
rb_gzfile_mtime(VALUE obj)
{
    return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
}

Возвращает время последней модификации, записанное в заголовке файла gzip.

orig_name() Показать исходный код
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, если имя исходного файла отсутствует.

os_code() Показать исходный код
static VALUE
rb_gzfile_os_code(VALUE obj)
{
    return INT2FIX(get_gzfile(obj)->os_code);
}

Возвращает номер кода ОС, записанный в заголовке файла gzip.

sync() Показать исходный код
static VALUE
rb_gzfile_sync(VALUE obj)
{
    return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
}

Аналогично IO#sync

sync = flag Показать исходный код
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;
}

Аналогично IO. Если flag — true, связанный объект IO должен отвечать на метод flush. В то время как режим sync равен true, коэффициент сжатия резко падает.

to_io() Показать исходный код
static VALUE
rb_gzfile_to_io(VALUE obj)
{
    return get_gzfile(obj)->io;
}

Аналогично IO.

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API