有下面的方法來壓縮條目添加到在一個ZipOutputStream:當使用ZipOutputStream使用Java創建失敗,在OpenOffice的
private void addFile(String filename, byte[] bytes, ZipOutputStream zos, boolean encrypt) throws IOException {
ZipEntry entry = new ZipEntry(filename);
if (encrypt) {
entry.setMethod(ZipEntry.DEFLATED);
} else {
entry.setMethod(ZipEntry.STORED);
CRC32 crc32 = new CRC32();
crc32.update(bytes);
entry.setCrc(crc32.getValue());
entry.setSize(bytes.length);
entry.setCompressedSize(bytes.length);
}
zos.putNextEntry(entry);
zos.write(bytes);
zos.flush();
zos.closeEntry();
}
...我用它打開一個新的ZipOutputStream( ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(new File(path))));
),設置其收縮方法(zos.setMethod(ZipOutputStream.DEFLATED);
),然後調用以下文件(按順序):
- 「MIME類型」(對於這個文件,我設置的ZipEntry方法存儲)
- 「清單.xml「在一個子文件中lder連續所謂的 「META-INF」(META-INF/manifest.xml的)
- 「的content.xml」
- 「styles.xml」
- 「了meta.xml」 在
- 「thumbnail.png」子文件夾名爲 「縮略圖」( 「縮略圖/ thumbnail.png」)
- 「的settings.xml」
......最後,我呼籲ZipOutputStream(zos.close();
)close方法。
如果我試圖用OpenOffice直接打開它,它會問我要打開什麼樣的文件,它說文件已損壞,最後打開文件...但是如果我解壓縮文件(我用的是winrar),然後我再次用相同的工具壓縮(winrar,我的意思是)沒有任何改變,OpenOffice能夠打開沒有任何問題的文檔...
任何幫助?提前致謝!
這聽起來有點奇怪。你是否正確處理異常**? – 2012-07-20 23:42:32
圍繞所有代碼我有一個很大的「嘗試捕獲」,並且沒有例外。 – 2012-07-20 23:54:07
你有任何小小的「嘗試捕獲」來壓扁異常嗎? (我問你是否正在處理異常* ...) – 2012-07-21 00:38:41