gpt4 book ai didi

java - 将文件保存在 ".zip"文件夹中是否可以加快文件写入网络驱动器的时间?

转载 作者:行者123 更新时间:2023-12-01 09:52:57 31 4
gpt4 key购买 nike

我知道当我将新文件写入以“.zip”结尾的文件夹时,它会压缩该文件。这是在 JAVA 中使用 BufferedOutputStream 并保存到 Windows 文件系统时的情况。我将这些文件保存到网络驱动器,因此写入时间取决于网络速度。

保存到 .zip 文件夹会加快写入速度吗?换句话说,它是传输未压缩的数据然后压缩它(这样就不会加快写入时间)还是先压缩然后写出文件?抱歉,如果这是一个无知的问题。

最佳答案

这个问题中有很多误解,我认为值得一次逐一讨论。

I know that when I write a new file to a folder that ends in ".zip" it compresses the file.

这是不正确的。创建带有“.zip”后缀的文件不会自动对其进行压缩。将文件写入以“.zip”作为文件名后缀(?!?)的目录也不会。不是在 Java 中。没有其他语言。

为了获得压缩,应用程序需要采取措施来实现这一点。在 Java 中,您可以使用ZipOutputStream以ZIP文件格式写入文件。然而,ZIP 文件实际上是一种“存档”格式,旨在在 ZIP 文件中保存多个文件。如果您只是想压缩单个文件,还有更好的选择;例如GZIPOutputStream

(您正在谈论的这个所谓的“ZIP 文件夹”也可能是一个普通的 ZIP 文件,已作为环回文件系统“安装”。您/其他人必须明确设置它. 无论如何,如果这是这里发生的情况,则与 Java 无关。这一切都发生在外部软件和“安装”ZIP 的操作系统中。)

This is when using BufferedOutputStream in JAVA and saving to a windows file system.

呃……不。往上看。然而,您是正确的,使用 BufferedOutputStream 来写入文件可能更好,尽管只有当您的应用程序以小块形式写入文件时它才真正有帮助;例如一次一个字节。 (流压缩使问题变得复杂,因此很难对此给出简单、通用的答案。)

I'm saving these files to a network drive, so the write time is dependent on network speed.

正确。它还取决于网络延迟、使用的协议(protocol)以及远程文件服务器上的负载。 (如果您“安装”了 ZIP,那么这也会增加开销。)

Will saving to a .zip folder speed up write time?

也许吧。往上看。这取决于您所说的 ZIP 文件夹的含义。

忽略这一点,从 Java 以压缩和/或存档形式写入文件(正确的方式)可能会加快写入速度。实际上有两件事需要考虑:

  • 对于普通压缩,您需要权衡应用程序 (!!) 压缩和解压缩数据所需的时间与通过移动和存储更少字节而节省的时间(和磁盘空间)。

  • 对于 ZIP 文件(和类似的存档格式),还有第二个潜在的节省空间。与存储和检索包含这些文件的单个 ZIP 文件相比,从文件系统存储和检索大量单独的小文件的速度较慢。

如果您正在寻找最佳压缩方式,那么 ZIP 并不是最佳选择。

In other words, does it transfer the data uncompressed and then compresses it (so it wouldn't speed up write time) or does it compress then write out the file?

变量太多,很难确定。但除非您做了一些奇怪的事情,否则这些字节很可能会以压缩形式通过网络发送。

<小时/>

最后,我建议您不要尝试将已安装的 ZIP 文件和网络共享结合起来:

  • 两者的结合可能会相互作用,导致性能变差。

  • 如果网络共享在不方便的时候离线,您可能会遇到 ZIP 损坏或文件丢失的风险。

关于java - 将文件保存在 ".zip"文件夹中是否可以加快文件写入网络驱动器的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493956/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com