我压缩的压缩文件有问题,我已经完成工作。代码有效,但文件未压缩为较小的文件。例如,我的文件 file.csv 为 2,1MB ,压缩的zip文件大于未压缩的文件,这是我的代码:
byte[] b = out.toByteArray();
ZipOutputStream zos = new ZipOutputStream(out);
// String filename = formcode+"_"+period+".xls";
ZipEntry entry = new ZipEntry("data.xls");
entry.setSize(b.length);
zos.putNextEntry(entry);
zos.write(b);
zos.closeEntry();
zos.close();
答案 0 :(得分:1)
正如评论员已经写过的,当原始文件已被压缩时,压缩文件的大小可以大于原始文件的大小。在您的问题中,您声明自己有file.csv
,并且在代码中看到file.xls
。您声称使用的是Apache POI,所以我认为您生成了XLS(X)文件。
正如@ pradin-paudel指出的那样,您的问题看起来像重复的一样。
您可以设置压缩方法和压缩级别,但我认为这样做不会带来很多好处。
现在,您似乎正在使用Excel文件,大小/压缩率取决于内容以及文件类型。例如,如果您的XLS文件带有嵌入的2Mb JPEG文件,则大多数文件内容已经被压缩,您将无法获得太多收益。另外,可以尝试使用老人的XLS技巧,即写出一个以逗号分隔的,带有csv扩展名的CSV文本文件,
,然后对其进行压缩,Excel可以将其打开(需要将其解压缩)。如果您的内容主要是文本,则压缩文件和典型的XLSX文件之间应该有十倍的差异*。
除非您有数据透视表,否则请在数据中使用函数或其他任何花哨的内容,请使用csv。 Excel 2003和更高版本也具有XML电子表格文件格式,该格式所需的空间是csv文本文件的4倍*,压缩后的大小约为ZIP文件的6倍*。
所以,要回答你的问题:
xlsx
。 / li>