• 关于minizip-ng无法解压unix下压缩的带有文件夹的zip文件


    1. 什么是minizip-ng

    minizip-ng是继zlib的contribute下的minizip重构而来的。具体详情参考

    2. minizip-ng库提取unix下zip压缩的目录失败

    2.1unix下zip压缩minizip解压失败

    1. minizip-ng/minizip-ng-2.3.9/build/test.dir$ tree
    2. .
    3. ├── a.txt
    4. └── locker
    5. └── b.txt
    6. 1 directory, 2 files
    7. minizip-ng/minizip-ng-2.3.9/build/test.dir$ zip -r ../test.zip ./*
    8. adding: a.txt (deflated 88%)
    9. adding: locker/ (stored 0%)
    10. adding: locker/b.txt (deflated 68%)
    11. minizip-ng/minizip-ng-2.3.9/build/test.dir$ cd ../
    12. minizip-ng/minizip-ng-2.3.9/build$ ./minizip -l ./test.zip
    13. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    14. ---------------------------------------------------
    15. Length Method Size Attribs Ratio Date Time CRC-32 Name
    16. ------ ------ ---- ------- ----- ---- ---- ------ ----
    17. 104 Defl:N 12 81b40000 11% 09-15-22 14:27 2a4b81aa a.txt
    18. 0 Stored 0 41fd0010 0% 09-15-22 14:28 00000000 locker/
    19. 31 Defl:N 10 81b40000 32% 09-15-22 14:28 e69714e8 locker/b.txt
    20. minizip-ng/minizip-ng-2.3.9/build$ ./minizip -x ./test.zip
    21. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    22. ---------------------------------------------------
    23. Extracting: a.txt
    24. Error -1 opening locker/

    2.2 unix下minizip自压自解都会失败

    1. minizip-ng/minizip-ng-2.3.9/build/test.dir$ ../minizip -i ../test.zip ./*
    2. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    3. ---------------------------------------------------
    4. Creating ../test.zip
    5. Adding: ./a.txt
    6. Adding: ./locker
    7. Adding: ./locker/b.txt
    8. minizip-ng/minizip-ng-2.3.9/build/test.dir$
    9. minizip-ng/minizip-ng-2.3.9/build/test.dir$ cd ../
    10. minizip-ng/minizip-ng-2.3.9/build$ ls
    11. CMakeCache.txt CMakeFiles cmake_install.cmake libminizip.a Makefile minizip minizip.pc test.dir test.zip
    12. minizip-ng/minizip-ng-2.3.9/build$ ./minizip -x test.zip
    13. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    14. ---------------------------------------------------
    15. Error -1 opening /a.txt
    16. minizip-ng/minizip-ng-2.3.9/build$ ./minizip -l test.zip
    17. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    18. ---------------------------------------------------
    19. Length Method Size Attribs Ratio Date Time CRC-32 Name
    20. ------ ------ ---- ------- ----- ---- ---- ------ ----
    21. 104 Defl:N 12 81b4 11% 09-15-22 14:27 2a4b81aa ./a.txt
    22. 0 Defl:N 0 41fd 0% 09-15-22 14:28 00000000 ./locker/
    23. 31 Defl:N 10 81b4 32% 09-15-22 14:28 e69714e8 ./locker/b.txt
    24. minizip-ng/minizip-ng-2.3.9/build$

    注意:minizip压缩目录时需要加上-i选项,否则压缩的文件直接时平铺的,没有任何目录在里面 

    1. minizip-ng/minizip-ng-2.3.9/build/test.dir$ tree
    2. .
    3. ├── a.txt
    4. └── locker
    5. └── b.txt
    6. 1 directory, 2 files
    7. minizip-ng/minizip-ng-2.3.9/build/test.dir$ ../minizip ../test.zip ./*
    8. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    9. ---------------------------------------------------
    10. Creating ../test.zip
    11. Adding: a.txt
    12. Adding: b.txt
    13. minizip-ng/minizip-ng-2.3.9/build/test.dir$ cd ../
    14. minizip-ng/minizip-ng-2.3.9/build$ ./minizip -l test.zip
    15. Minizip 2.3.9 - https://github.com/nmoinvaz/minizip
    16. ---------------------------------------------------
    17. Length Method Size Attribs Ratio Date Time CRC-32 Name
    18. ------ ------ ---- ------- ----- ---- ---- ------ ----
    19. 104 Defl:N 12 81b4 11% 09-15-22 14:27 2a4b81aa a.txt
    20. 31 Defl:N 10 81b4 32% 09-15-22 14:28 e69714e8 b.txt

    2.3 分析原因

    minizip获取压缩文件条目时,条目属性和os的文件类型没有匹配好而导致的.

     后面使用新的minizip板本验证,此问题已经得到解决了.目前在minizip-ng-2.10.6.tar.gz和minizip-ng-3.0.0.tar.gz以及minizip-ng-3.0.6.tar.gz验证都是ok的

  • 相关阅读:
    计算机毕业设计之java+springboot基于vue的篮球竞赛预约平台
    【老生谈算法】matlab实现LU分解算法源码——LU算法
    GBase 8a MPP集群基本配置
    订单超时自动取消订单实现策略
    8年资深测试,揭开自动化测试真面纱,发展苗头到自动化测试成熟......
    React Native V0.74 — 稳定版已发布
    图扑数字孪生空冷机组,助推智慧电厂拥抱“双碳”
    Flink Window&Time 原理
    Hive-启动与操作(2)
    swift - 如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI、Xcode 11 Beta 5)
  • 原文地址:https://blog.csdn.net/haiyanglideshi/article/details/126872727