你可以去网上先查一下支持文件夹打包的可用第三方DLL或者代码,然后在你的工程里引用,再依照其使用方法调用.
如果不存在这种现成的产品,你只想用已有的方法来实现,也不是不可以.思路如下:
第一种思路:
写一段专用的遍历函数,遍历某个传入的文件夹.将每一级目录下的内容就地打包,但是要制定好有规则的文件名(保证每个压缩文件的名称都不重复).在遍历文件夹的同时,需有一个列表对象,将每个压缩包的文件名和其所在的路径一一对应的写入其中.最后将所有新产生的全部压缩文件,全都压缩到一个文件中,同时将列表文件序列化(就是写到一个文件中)后和这些小压缩包一起都压进去.删除中间产生的临时文件.
在你进行解压缩时,解压出全部小压缩包和列表文件.读取列表文件,并装入列表对象.
再循环这个列表中的每一项,逐一解压缩并根据列表对象的路径信息,放入指定的文件夹的相对位置既可.
第二种思路:
同样是利用一个列表,同样进行文件夹遍历.将所有找到的文件,文件名和与指定路径的相对路径加入列表,但在压缩时却是将文件按照文件存放在同一文件夹下的方式压缩进一个文件.解压时,也是读列表,按列表的项目取得文件并解压到相对位置.这个方法只适用于很小的范围,因为它有个致命的前提:所有文件夹中不得存在相同文件名的文件,如有同名,压缩会失败.

解决方案 »

  1.   

    上面虽然写了很多,但是基本的小技巧只有一个,就是利用列表对象.你把文件名和相对路径做为一个键值对来保存,当整个列表做好时,通过文件的二进制写入或读取,就可以再产生出一个可以随文件走的信息清单.这样可以对应地进行压缩和解压.如果你真的实现了文件的压缩,那这个技巧可以帮你完成文件夹的压缩和解压.其实这不是ZIP实现文件夹压缩的正规处理方法,但是应该可以解决你的问题了.很希望你解决问题之后,把解决的情况也解说一下,也算是一种交流