>我正在尝试创建一个 100 csv 的 zip。 我需要以最快的方式在单个 csv 中编写 100,000 行。 我正在使用openCSV,ZipEntry方法写入csv。
使用的一些代码:
ZipEntry zipentry = new ZipEntry(filename);
zos.putNextEntry(entry);
CSVWriter writer = new CsvWriter(new OutputStreamWriter(zos));
writer.writeNext(entries); //entries is single line of csv
目前,编写单个 csv 需要 1.5 秒,而创建完整的 zip 大约需要 120-140 秒。
我已经调试了代码,并观察到代码中的其他计算不需要时间,但写入操作确实需要时间。
我尝试创建 100,000 行的列表,然后一次编写一个文件,而不是直接流式传输。但它仍然需要相同的时间。
请建议最快的方法,花费更少的时间。 ;-(
BufferedOutputStream
大大提高了IO 性能:
请参阅 Javadoc: BufferedOutputStream
通过设置此类输出流,应用程序可以将字节写入基础输出流,而不必导致对写入的每个字节调用基础系统。
OutputStream out = new BufferedOutputStream(zos, 1<<16);
CSVWriter writer = new CsvWriter(new OutputStreamWriter(out);
尝试对 ZipOutputStream 使用不太激进的压缩级别,例如 3:
公共无效设置级别(int level(