класс Zlib::GzipFile
Zlib::GzipFile — это абстрактный класс для работы с сжатым файлом в формате gzip. Операции определены в подклассах, Zlib::GzipReader для чтения и Zlib::GzipWriter для записи.
GzipReader следует использовать, связав с ним объект IO или подобный объекту IO.
Method
-
comment= (
Zlib::GzipWriter#comment=) -
eof? (
Zlib::GzipReader#eof?) -
lineno (
Zlib::GzipReader#lineno) -
lineno= (
Zlib::GzipReader#lineno=) -
mtime= (
Zlib::GzipWriter#mtime=) -
path (при поддержке пути в базовом
IO)
(из-за внутренней структуры, документация может быть расположена в Zlib::GzipReader или Zlib::GzipWriter)
Публичные методы класса
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 в блоке.
Публичные методы экземпляра
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.
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?
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, если комментарии отсутствуют.
static VALUE
rb_gzfile_crc(VALUE obj)
{
return rb_uint2inum(get_gzfile(obj)->crc);
} Возвращает значение CRC сжатых данных.
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.
static VALUE
rb_gzfile_level(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->level);
} Возвращает уровень сжатия.
static VALUE
rb_gzfile_mtime(VALUE obj)
{
return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
} Возвращает время последней модификации, записанное в заголовке файла gzip.
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 если исходное имя файла отсутствует.
static VALUE
rb_gzfile_os_code(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->os_code);
} Возвращает номер кода операционной системы, записанный в заголовке файла gzip.
static VALUE
rb_gzfile_sync(VALUE obj)
{
return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
} Аналогично IO#sync
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 уровень сжатия резко снижается.
static VALUE
rb_gzfile_to_io(VALUE obj)
{
return get_gzfile(obj)->io;
} Аналогично IO.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.