0
http://sevenzipjbind.sourceforge.net/basic_snippets.html - Java代碼示例 http://sevenzipjbind.sourceforge.net/javadoc/index.html - API文檔的JRuby與sevenzipjbinding
require "./sevenzipjbinding-AllPlatforms.jar"
require "./sevenzipjbinding.jar"
java_import "net.sf.sevenzipjbinding.ExtractAskMode"
java_import "net.sf.sevenzipjbinding.ExtractOperationResult"
java_import "net.sf.sevenzipjbinding.IArchiveExtractCallback"
java_import "net.sf.sevenzipjbinding.ISequentialOutStream"
java_import "net.sf.sevenzipjbinding.ISevenZipInArchive"
java_import "net.sf.sevenzipjbinding.PropID"
java_import "net.sf.sevenzipjbinding.SevenZip"
java_import "net.sf.sevenzipjbinding.SevenZipException"
java_import "net.sf.sevenzipjbinding.impl.RandomAccessFileInStream"
randomAccessFile = java.io.RandomAccessFile.new(ARGV[0], "r")
SevenZip.initSevenZipFromPlatformJAR
inArchive = SevenZip.openInArchive(nil, RandomAccessFileInStream.new(randomAccessFile))
(0..inArchive.getNumberOfItems-1).each { |i|
puts
puts "PATH: #{inArchive.getProperty(i, PropID::PATH)}" # show file name
puts "SIZE: #{inArchive.getProperty(i, PropID::SIZE)}" # and file size
}
inArchive.close
randomAccessFile.close
確定它的作品一般。但我無法理解提取。
inArchive.extractSlow(int index, ISequentialOutStream outStream, java.lang.String password)
如何ISequentialOutStream工作,以及如何獲取存檔文件作爲字符串在內存中或將其保存到磁盤?
謝謝你的幫助。一個更正。 'net.sf.sevenzipjbinding.SevenZipException:'int ISequentialOutStream.write(byte [])'的實現應該至少寫入一個字節。返回的寫入字節數量:0' 'write'方法需要'@ buffer.size'。 'def write(bytes) @ buffer.write(bytes) return @ buffer.size end' – user3211940
好的,但我認爲你需要返回'bytes.length'。 JavaDoc並不完全清楚,但通常你告訴調用者你能夠寫*他們給你*的東西。 – Shepmaster