0

我在客户端机器服务器上有一个可能预先存在的目录结构,如下所示:

-|
 +css
  |-ABC
  |-EFG
  |-XYZ
 +img
  |-ABC
  |-EFG
  |-XYZ
 +js
  |-ABC
  |-EFG
  |-XYZ
 +htm
  |-ABC
  |-EFG
  |-XYZ

当我们将客户更新发送到他们的电子商务网站时,我们会以 zip 文件的形式发送他们,该文件具有以下结构:

-|
 +css
  |-UniqueDirectory
 +img
  |-UniqueDirectory
 +js
  |-UniqueDirectory
 +htm
  |-UniqueDirectory

...其中 UniqueDirectory 始终是相同的名称。

话虽这么说,有没有一种方法可以使用 Visual C++ 2005 编写程序来解压缩我们发送给客户的 zip 文件到现有目录中而不覆盖任何现有目录(当然,不包括 UniqueDirectory,可以而且应该被覆盖)。

在客户端计算机上解压缩文件后的最终结果应该是:

-|
 +css
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +img
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +js
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +htm
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ

这可以使用 C++ 完成吗?我的客户不具备将文件解压缩到正确目录所涉及的技术技能。他们也不一定要安装解压缩程序。

它需要一个外部库吗?我最好只使用 Visual C++ 2005 中的库来执行此操作,但如果需要外部库,我想知道它叫什么。

4

2 回答 2

2

除非您想仅使用 VS2005 提供的功能自己实现压缩/解压缩算法,否则您将需要考虑使用库为您完成工作。我推荐zlib。免费。

网站上有一个操作方法

编辑:针对您评论中的问题,是的,它已经足够老了,可以由 VS2005 构建。我刚刚下载了最新的源代码并能够将其编译为.dll. 我下载的副本是“zlib source code, version 1.2.3, zipfile format”。解压文件后,查找 /projects/visualc6/ 目录。您应该能够从那里构建库。

或者,您也可以从 zlib 站点下载预编译库。它与源文件下载一起列为“zlib 编译的 DLL,版本 1.2.3,zipfile 格式”

编辑:请记住 zlib 是一个C库。如果您正在寻找C++库,您可以尝试gzstream,它基本上是 zlib 的 C++ 包装器。

于 2009-12-02T17:33:34.793 回答
0

不,MFC/ATL 没有这种能力。除非您计算与 Visual Studio 一起安装并且可以通过 C++/CLI 使用的 J# 可再发行组件,否则您需要一个外部库或重新发明轮子。

于 2009-12-02T17:28:58.457 回答