Class: LZMA
- Inherits:
-
Object
show all
- Defined in:
- lib/lzma.rb,
lib/lzma.rb
Defined Under Namespace
Modules: C
Classes: Stream
Class Method Summary
collapse
Class Method Details
.decompress(what, buf_len = 4096, &blk) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/lzma.rb', line 25
def self.decompress(what, buf_len=4096, &blk)
bais = what.is_a?(IO) ? what.to_inputstream : Java::java.io.ByteArrayInputStream.new(what.to_s.to_java_bytes)
lis = Java::net.contrapunctus.lzma.LzmaInputStream.new(bais)
dis = Java::java.io.DataInputStream.new(lis)
res = ''
blk ||= lambda {|chunk| res << chunk }
expanded, read = Java::byte[buf_len].new, 0
while (read = dis.read(expanded, 0, buf_len)) > 0
blk.call(String.from_java_bytes(expanded[0, read]))
end
dis.close
block_given? ? what : res
end
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/lzma.rb', line 42
def self.(file, to=nil, buf_len=4096)
to ||= file.gsub(/\.(xz|lzma)$/, '')
File.unlink(to) if File.file?(to)
bais = Java::java.io.FileInputStream.new(file)
lis = Java::net.contrapunctus.lzma.LzmaInputStream.new(bais)
dis = Java::java.io.DataInputStream.new(lis)
out = Java::java.io.FileOutputStream.new(to)
expanded, read = Java::byte[buf_len].new, 0
while (read = dis.read(expanded, 0, buf_len)) > 0
out.write(expanded[0, read])
end
dis.close
to
end
|