【发布时间】:2016-09-26 09:53:03
【问题描述】:
我知道当我将新文件写入以“.zip”结尾的文件夹时,它会压缩文件。这是在 JAVA 中使用 BufferedOutputStream 并保存到 Windows 文件系统时。我将这些文件保存到网络驱动器,因此写入时间取决于网络速度。
保存到 .zip 文件夹会加快写入时间吗?换句话说,它是传输未压缩的数据然后压缩它(因此它不会加快写入时间)还是压缩然后写出文件?抱歉,如果这是一个无知的问题。
【问题讨论】:
-
试试看,写一些压缩和不压缩的数据,并测量时间。
-
最小化网络负载的一个好方法是使用GZIPOutputStream 压缩通过网络发送的数据,然后在读取流时在另一端使用GZIPInputStream 显式解压缩。 (GZIP 比 ZIP 压缩得更好)。
-
仅使用“.zip”作为文件扩展名不会自动压缩内容...您需要从Java显式压缩文件。
-
当我在 Windows 中查看该文件夹时,它说它已被压缩。它给出了实际大小和压缩后的大小。
-
BufferedOutputStream 不压缩。 .zip 文件夹可能是 NTFS 压缩文件夹,也许?这意味着您通过网络发送未压缩的文件,主机将即时压缩它。如果有的话,这可能会使它变慢。网络上的数据传输将花费和以前一样多的时间,因为它仍在发送未压缩的字节。写入文件的主机现在首先压缩它,然后写入压缩的字节。压缩很可能会成为瓶颈,并且比写入操作中节省的时间花费更多的时间。
标签: java file-writing bufferedoutputstream