我想覆盖.zi中某个文件,在程序中如何编程。现在遇到这样一个项目,对word2007进行模板开发。因为word2007文档后面加上.zip后缀名后解压后会生成很多xml文档,当我对某个xml 文档进行编辑后,拖动到 压缩文件中,再去掉.zip后缀名,打开
word文档,则会显示修改后的内容。现在在程序可以可以实现:修改文件名、解压文件、修改文件,但是如何把修改的文件
覆盖压缩文件中内容呢,请高手帮忙看看,再次发帖,我相信一定会有高人的。

解决方案 »

  1.   

    很简单的嘛,先说你用什么 zip 库或者 zip 控件,以及 delphi 版本,否则难说。
      

  2.   

    单独的更新不知道怎么做,因为这个涉及到Shell操作
    不过如果你使用控件的话就很简单了,直接先解压出来,然后更新,最后再用控件重新压缩一遍
      

  3.   

    是啊  简单点的就是解压覆盖再压缩了,但可能不适用于较大体积的zip文件。
      

  4.   

    首先很感谢各位网友回复。五一刚回来,我想说的是我并不需要解压再压缩这样的效果,因为它并不适合我的要求。是这样的,word2007的文档添加.zip后缀名以后,就会生成很多XML电子文档,我想读取某个电子文档内容,并更新,然后再去掉.zip后缀名,这样文档就显示我修改后内容。如果单纯的解压,更改、再压缩,然后再去掉.zip后缀名,这样是不行的,只有把修改后的电子文档拖放到.zip文件中覆盖原来的文件,在更改后缀名,才可以。我现在使用的是D7+VCLZIP控件。
      

  5.   

    当然,我也不同意解压后替换文件再压缩这种低效率的代码。
    不过,VCLZIP 貌似是有版权的?
    所以我自己一般用http://sourceforge.net/projects/tpabbrevia/这个组件,开源,免费,turbo power 出品嘛,turbo power 一系列东西以前可是商业收费组件哦。
    不过这个组件的麻烦之处是需要修改源代码的一个地方,因为它是靠文件名来识别压缩文件类型的
    所以,我推荐的另外一个好东西就是 kazip 这个东西,免费,开源,速度快。不用修改源代码,使用方法和 tpabbrevia 接近。
    再插一句,VCLZIP 貌似速度比较慢,这个纯我个人观点
    如果你只操作纯正 zip 文件,那么我建议你使用 kazip
    废话说完了;
    至于这两者的例子很简单,都自带 demo。边看边写吧,如果有什么困难,可以在这里提出来,我尽量回答。PS: 我就是一个业余学 delphi 的玩,不要问我什么高深的问题,我不会哈。
      

  6.   

    非常感谢网友的答复,我最后还是放弃了。因为我的问题不是单纯的加压缩。我主要是来处理word2007的文档的,因为word2007的文档名后缀名被改为.zip再解压会生成很多.XML文件。如果单纯的把其中解压后的文件做了些改动,再压缩,然后再将后缀名改回来,改文档就被破坏了。说句提外话,现在delphi机会越来越少了,我转JAVA了去了。