为什么 7-zip / WinRAR 在将文件移动到目的地之前将文件解压缩到“临时”?

57 windows winrar 7-zip

为什么 7-zip / WinRAR 在将文件移动到目的地之前将文件解压缩到“临时”?

我认为直接解压缩到目的地没有任何优势。这真的很烦人,尤其是对于大文件(就像现在一样!)。


编辑:

请解释为什么他们没有做到

Syn*_*ech 92

你究竟是如何提取文件的?您使用的是命令行还是 GUI?您是拖动文件还是选择它们并使用提取功能?你在使用 shell-extension 上下文菜单吗?

如果输入目标文件夹然后选择提取功能或使用shell-extension,则它们不会先提取到临时文件夹,而是直接提取到目标。

如果您选择在UI中的文件,并拖动它们到目标文件夹,然后解压到一个临时文件夹。

原因在于如何选择目的地。如果您进入目标文件夹或使用上下文菜单项,那么程序就知道它需要提取到的确切位置。但是,如果只是拖动文件,那么由于OLE的拖放功能,程序不知道目标文件夹在哪里。换句话说,它是资源管理器接收目标文件夹,而不是归档程序。结果,程序不知道在哪里提取它们,因此只需将它们提取到临时文件夹,然后资源管理器在完成后移动它们。通过使用这两种方法提取大文件,您可以清楚地看到这一点。当您将它拖到文件夹中时,它会解压缩,然后您会看到资源管理器的标准文件操作对话框将其移动到文件夹中。如果您指定文件夹并单击提取,它会提取并且不进行进一步处理。

请随意阅读7-Zip源代码以了解提取位置的处理方式。


几年前,当我想在我正在编写的程序中实现拖放时,我通过艰难的方式学到了这一点。

  • 绝对精彩——谢谢!这让我困惑多年,但我从来没有花时间去追踪“什么”和为什么“。奇怪的时候我发现我的 C: temp 文件夹填满了 whazoo,我跋涉通过 Winrar 的选项来找到它的位置必须设置为首先提取到 C: 上的临时文件夹。但是,可惜,我没有找到它。我从未将这两种方法之间的相关性联系起来,现在很高兴看到光明:) 谢谢! (9认同)
  • 这里错误的一件事是资源管理器不会**移动**文件,而是**复制**它。这是*真令人恼火*,因为移动真的很快(除非从一个分区移动到另一个分区)并且应该是理想的选择(它不会浪费空间),但微软的白痴认为**复制是个好主意** 从临时文件夹中,然后将临时文件夹数据留在周围。提取一个巨大的档案不仅需要双倍的空间,而且几乎需要两倍的时间! (4认同)