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