zoukankan      html  css  js  c++  java
  • .net 在内存中解压Zip并修改再打包

    最近做个组件,需要从服务器端获取一个zip包(是一些实体元数据及配置方案的资源包),然后将zip包中的配置文件修改后重新上传发布。

    开始时,我直接用Package类读取内存中获取的zip包数据,然后读取包中的一个xml文件,修改它的内容,然后写回流,结果无法导回系统(系统不认这个包)。

    是不是文件损坏?我把修改完的数据流输出为一个zip文件,打开查看:文件内容正确,看上去一切正常,用WINDOWS系统将文件手动导进系统——我靠!能导进,说明文件无损坏,zip文件保存得似乎也没有问题。

    那是啥原因?难道Package类(实际它默认是用ZipPackage来实例化)解压和压缩算法和服务器的不一样?同样的几个文件,我用Package类进行zip打一个包,然后用windows自带的zip打另打一个包,两个文件大小的确有差异,windows自带的zip打包功能似乎算法更好,能更省些空间。但这个不重要了,我重新用Package做解压和压缩,但这次不是在内存里,而是输出为文件进行操作,一切正常,修改后打包能导进系统,说明系统还是认这个Package压缩好的包的。

    猜想直接在PackagePart的流在内存中读后修改直接写回的话好像会产生问题,于是后来解决办法是,先将内存A中的zip包中的文件先解压到内存B中,在B中修改完成后,再压缩到内存C中,然后上传C内存流里的包,一切正常!

  • 相关阅读:
    Leetcode Binary Tree Level Order Traversal
    Leetcode Symmetric Tree
    Leetcode Same Tree
    Leetcode Unique Paths
    Leetcode Populating Next Right Pointers in Each Node
    Leetcode Maximum Depth of Binary Tree
    Leetcode Minimum Path Sum
    Leetcode Merge Two Sorted Lists
    Leetcode Climbing Stairs
    Leetcode Triangle
  • 原文地址:https://www.cnblogs.com/bcszz/p/2455362.html
Copyright © 2011-2022 走看看