3
我在Vagrant虛擬框中的基本Ubuntu lucid32映像上運行Ruby 1.9.3p194的Rails(3.2.3)應用程序。虛擬箱在Leopard上運行,因爲它值得。我試圖在應用程序中使用rubyzip來解壓zip文件 - 2009_da_lmp.zip
。直接從rubyzip庫實例使用的代碼,我可以證實,我可以列出存檔文件內容:什麼可能解釋「無效的存儲塊長度」錯誤?
#f is the absolute path to 2009_da_lmp.zip (string)
Zip::ZipFile.open(f) { |zf| zf.entries[0] }
=> 20090101_da_lmp.csv #that is indeed a file in the archive.
使用從信息庫中的例子更多的代碼,我試圖讓在一個實際的文件歸檔文件:
Zip::ZipInputStream.open(f) { |zis|
entry = zis.get_next_entry
print "first line of '#{entry.name}' (#{entry.size} bytes:) "
puts "'#{zis.gets.chomp}'" }
=> first line of '20090101_da_lmp.csv' (826610 bytes:) Zlib::DataError:
invalid stored block lengths #and a long stack trace I can provide
#if that might help
Mac OS解壓縮實用程序將歸檔文件解壓縮。我想知道它是否是某種與編碼相關的東西(我的語言環境設置爲en_US.UTF-8,因爲在開發中使用PostgreSQL不那麼痛苦),但我不知道如何判斷是否屬於這種情況。我無法找到可能導致此錯誤的信息。
感謝馬克。這有助於我確認我懷疑該文件已損壞。我認爲我早期的rubyzip失誤意外地在存檔中寫了一些東西,但之前我已經使用Mac OS解壓縮器成功解壓縮了它,所以我感到困惑。刪除損壞的文件並將其替換爲新的文件就可以實現。 –