Class: ZipTricks::FileReader::ZipEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/zip_tricks/file_reader.rb

Overview

Represents a file within the ZIP archive being read

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#commentString

Returns the file comment.

Returns:

  • (String)

    the file comment



110
111
112
# File 'lib/zip_tricks/file_reader.rb', line 110

def comment
  @comment
end

#compressed_sizeFixnum

Returns size of compressed file data in the ZIP.

Returns:

  • (Fixnum)

    size of compressed file data in the ZIP



88
89
90
# File 'lib/zip_tricks/file_reader.rb', line 88

def compressed_size
  @compressed_size
end

#crc32Fixnum

Returns the CRC32 checksum of this file.

Returns:

  • (Fixnum)

    the CRC32 checksum of this file



85
86
87
# File 'lib/zip_tricks/file_reader.rb', line 85

def crc32
  @crc32
end

#disk_number_startFixnum

Returns disk number where this file starts.

Returns:

  • (Fixnum)

    disk number where this file starts



97
98
99
# File 'lib/zip_tricks/file_reader.rb', line 97

def disk_number_start
  @disk_number_start
end

#dos_dateFixnum

Returns the bit-packed DOS date.

Returns:

  • (Fixnum)

    the bit-packed DOS date



82
83
84
# File 'lib/zip_tricks/file_reader.rb', line 82

def dos_date
  @dos_date
end

#dos_timeFixnum

Returns the bit-packed DOS time.

Returns:

  • (Fixnum)

    the bit-packed DOS time



79
80
81
# File 'lib/zip_tricks/file_reader.rb', line 79

def dos_time
  @dos_time
end

#external_attrsFixnum

Returns external attributes of the file.

Returns:

  • (Fixnum)

    external attributes of the file



103
104
105
# File 'lib/zip_tricks/file_reader.rb', line 103

def external_attrs
  @external_attrs
end

#filenameString

Returns the filename.

Returns:

  • (String)

    the filename



94
95
96
# File 'lib/zip_tricks/file_reader.rb', line 94

def filename
  @filename
end

#gp_flagsFixnum

Returns bit-packed general purpose flags.

Returns:

  • (Fixnum)

    bit-packed general purpose flags



73
74
75
# File 'lib/zip_tricks/file_reader.rb', line 73

def gp_flags
  @gp_flags
end

#internal_attrsFixnum

Returns internal attributes of the file.

Returns:

  • (Fixnum)

    internal attributes of the file



100
101
102
# File 'lib/zip_tricks/file_reader.rb', line 100

def internal_attrs
  @internal_attrs
end

#local_file_header_offsetFixnum

Returns at what offset the local file header starts in your original IO object.

Returns:

  • (Fixnum)

    at what offset the local file header starts in your original IO object



107
108
109
# File 'lib/zip_tricks/file_reader.rb', line 107

def local_file_header_offset
  @local_file_header_offset
end

#made_byFixnum

Returns bit-packed version signature of the program that made the archive.

Returns:

  • (Fixnum)

    bit-packed version signature of the program that made the archive



67
68
69
# File 'lib/zip_tricks/file_reader.rb', line 67

def made_by
  @made_by
end

#storage_modeFixnum

Returns Storage mode (0 for stored, 8 for deflate).

Returns:

  • (Fixnum)

    Storage mode (0 for stored, 8 for deflate)



76
77
78
# File 'lib/zip_tricks/file_reader.rb', line 76

def storage_mode
  @storage_mode
end

#uncompressed_sizeFixnum

Returns size of the file once uncompressed.

Returns:

  • (Fixnum)

    size of the file once uncompressed



91
92
93
# File 'lib/zip_tricks/file_reader.rb', line 91

def uncompressed_size
  @uncompressed_size
end

#version_needed_to_extractFixnum

Returns ZIP version support needed to extract this file.

Returns:

  • (Fixnum)

    ZIP version support needed to extract this file



70
71
72
# File 'lib/zip_tricks/file_reader.rb', line 70

def version_needed_to_extract
  @version_needed_to_extract
end

Instance Method Details

#compressed_data_offsetFixnum

Returns at what offset you should start reading for the compressed data in your original IO object.

Returns:

  • (Fixnum)

    at what offset you should start reading for the compressed data in your original IO object



132
133
134
# File 'lib/zip_tricks/file_reader.rb', line 132

def compressed_data_offset
  @compressed_data_offset or raise LocalHeaderPending
end

#compressed_data_offset=(offset) ⇒ Object

Sets the offset at which the compressed data for this file starts in the ZIP. By default, the value will be set by the Reader for you. If you use delayed reading, you need to set it by using the get_compressed_data_offset on the Reader:

entry.compressed_data_offset = reader.get_compressed_data_offset(io: file,
       local_file_header_offset: entry.local_header_offset)


148
149
150
# File 'lib/zip_tricks/file_reader.rb', line 148

def compressed_data_offset=(offset)
  @compressed_data_offset = offset.to_i
end

#extractor_from(from_io) ⇒ #extract(n_bytes), #eof?

Returns a reader for the actual compressed data of the entry.

reader = entry.extractor_from(source_file) outfile << reader.extract(512 * 1024) until reader.eof?

Returns:

  • (#extract(n_bytes), #eof?)

    the reader for the data



118
119
120
121
122
123
124
125
126
127
128
# File 'lib/zip_tricks/file_reader.rb', line 118

def extractor_from(from_io)
  from_io.seek(compressed_data_offset, IO::SEEK_SET)
  case storage_mode
  when 8
    InflatingReader.new(from_io, compressed_size)
  when 0
    StoredReader.new(from_io, compressed_size)
  else
    raise UnsupportedFeature, "Unsupported storage mode for reading - %d" % storage_mode
  end
end

#known_offset?Boolean

Tells whether the compressed data offset is already known for this entry

Returns:

  • (Boolean)


138
139
140
# File 'lib/zip_tricks/file_reader.rb', line 138

def known_offset?
  !@compressed_data_offset.nil?
end