一、ZIP压缩的两种规范

zip64 格式是标准 zip 格式的扩展,实际上消除了 zip 存档中文件大小和数量的限制。

每种格式允许的最大值总结如下:

Standard Format Zip64 Format
Number of Files Inside an Archive 65,535 2^64 - 1
Size of a File Inside an Archive [bytes] 4,294,967,295 2^64 - 1
Size of an Archive [bytes] 4,294,967,295 2^64 - 1
Number of Segments in a Segmented Archive 999 (spanning) 65,535 (splitting) 4,294,967,295 - 1
Central Directory Size [bytes] 4,294,967,295 2^64 - 1

二、.NET提供的ZIP压缩能力

.NET提供了以下几个类来完成压缩功能,但是没有找到ZIP64的选项;

ZipFile

ZipArchive

ZipArchiveEntry

DeflateStream

GZipStream

三、DotNetZip提供的压缩能力

DotNetZip 是一个快速、免费的类库和工具集,用于处理 zip 文件。使用 VB、C# 或任何 .NET 语言轻松创建、提取或更新 zip 文件。

DotNetZip提供了Zip64Option来控制压缩的格式;默认情况下使用Never,即不使用ZIP64扩展;

    public enum Zip64Option
{
//
// Summary:
// The default behavior, which is "Never". (For COM clients, this is a 0 (zero).)
Default = 0,
//
// Summary:
// Do not use ZIP64 extensions when writing zip archives. (For COM clients, this
// is a 0 (zero).)
Never = 0,
//
// Summary:
// Use ZIP64 extensions when writing zip archives, as necessary. For example, when
// a single entry exceeds 0xFFFFFFFF in size, or when the archive as a whole exceeds
// 0xFFFFFFFF in size, or when there are more than 65535 entries in an archive.
// (For COM clients, this is a 1.)
AsNecessary = 1,
//
// Summary:
// Always use ZIP64 extensions when writing zip archives, even when unnecessary.
// (For COM clients, this is a 2.)
Always = 2
}

我们可以通过以下方式来生成zip压缩文件

        public void ZIPContents(IDictionary<string, string> entrys, string zipFileName)
{
ZipFile zipfile = new ZipFile(zipFileName);
zipfile.UseZip64WhenSaving = Zip64Option.AsNecessary;
foreach (var entry in entrys)
{
zipfile.AddEntry(entry.Key, entry.Value);
} zipfile.Save();
}

四、ZIP64的兼容问题

ZIP64作为一个后来的扩展,虽然有很长的时间了,但是还是有一些操作系统或者开发语言的类库都不支持,从而会造成兼容性问题,最好是Zip64Option.AsNecessary选项,只有在必要的时候自动使用ZIP64位扩展;

ZIP64压缩扩展的兼容性问题的更多相关文章

  1. PHP的LZF压缩扩展工具

    这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针对文件的操作.因此,就像 B ...

  2. PHP的bz2压缩扩展工具

    在日常的开发和电脑使用中,我们经常会接触到压缩和解压的一些工具,PHP 也为我们准备了很多相关的操作扩展包,都有直接可用的函数能够方便的操作一些压缩解压功能.今天,我们先学习一个比较简单但不太常用的压 ...

  3. Linux基本命令(3)文件备份和压缩命令

    文件备份和压缩命令 在Linux中,常用的文件压缩工具有gzip.bzip2.zip.bzip2是最理想的压缩工具,它提供了最大限度的压缩.zip兼容性好,Windows也支持. 命令 功能 bzip ...

  4. Linux常用命令大全 --- 文件备份和压缩命令

    在linux中,常用的文件压缩工具有gzip.bzip2.zip . bzip2是最理想的压缩工具,它提供了最大限度的压缩.zip 兼容性好windows也支持 1.bzip2 命令 在shell 提 ...

  5. linux档案与文件的的压缩与打包

    本文涉及的命令:gzip.zcat.bzip2.bzcat.tar.dump.restore.mkiosfs.cdrecord.dd.cpio. 概念: 几种基础压缩的概念: 计算机最小单位是字节,但 ...

  6. FITS 基本格式及其扩展

    一.FITS 一般介绍二.FITS 的一般结构三.FITS 基本格式四.FITS 的随机组扩展五.FITS 的表扩展 (ASCII 表扩展)六.FITS 的一般扩展和块因子参考文献 FITS 基本格式 ...

  7. Linux文件压缩与打包笔记

    linux 文件压缩与打包笔记 压缩原理:通过算法去掉空位,1Bytes=8bits , 可能存储的真正有用的数据并没有占满一个字节空间 , 还有就是可能有重复的数据,通过某种算法从这些方面进行压缩处 ...

  8. Hadoop压缩之CompressionCodecFactory

    1.CompressionCodecFactory简介 当在读取一个压缩文件的时候,可能并不知道压缩文件用的是哪种压缩算法,那么无法完成解压任务.在Hadoop中,CompressionCodecFa ...

  9. Linux系列之压缩与解压

    1.压缩技术 1.常用命令实例 1.zip格式的压缩与解压缩 zip是压缩指令,unzip是解压指令.zip指令既可以压缩文件,也可以压缩目录.压缩会自动保留源文件,解压会自动保留压缩文件. zip  ...

  10. Cython 模块扩展 - 编程语言 替代实现 应用领域 汇总一览

    Python 本身只是一种编程语言规范,可以使用其它编程语言实现它或扩展它:譬如:采有 Python C Java .Net 等重实现 Python,而采用 Python C/C++ C# Java ...

随机推荐

  1. nebula命令行无法查看配置信息

    版本为nebula2.0.1 正在部署集群,节点数比较多,直接在一个节点配置好配置文件,分发到其他节点, 为了减少后续修改配置文件时再为配置文件添加--local_config=true,所以直接加上 ...

  2. (已解决)问题:windows下,为THINKPHP配置apache虚拟主机。

    1. 环境和需求 win10_x64,php7,apache24,thinkphp5. 现在,我要用apache给THINKPHP的一个项目设置一个虚拟主机,需要配置. 2. 步骤 a. 首先,找到h ...

  3. ajax异步参数详解及alax错误信息error分析

    一.$.ajax()的参数列表 ↑ 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: & ...

  4. 新centos6 静态ip 放行端口 hosts主机名 jdk环境变量

    0 jdk 环境变量 vi  /etc/profile source /etc/profile 刷新环境变量 在尾部增加如下代码: #JDK全局环境变量配置export JAVA_HOME=/usr/ ...

  5. c语言中的原子操作

    参考文章:https://blog.csdn.net/yikai2009/article/details/8650221 1. 原子操作:原子操作指的是在执行过程中不会被别的代码所中断的操作..分为 ...

  6. maven父子项目,由于pom文件中的<packaging>pom</packaging>导致报数据源配置错误

    啊啊啊~~~ 又是踩坑的一天!!! 我在子模块中进行开发,然后子模块的pom文件中也写了<packaging>pom</packaging>导致报数据源配置错误.具体内容如下图 ...

  7. Vue 二维码生成插件

    1. 安装 qrcode.vue 仓库地址 // vue2 安装1.x版本.vue3 安装3.x版本 npm install --save qrcode.vue // 或 yarn add qrcod ...

  8. 【xUtils框架问题】xUtils继承基类的x.view().inject(this)绑定点击事件@Event无效

    由于看得教程里的xUtils比较老了,不知道什么版本的. 还是使用ViewUtils.inject()进行绑定反射的,使用@OnClick进行点击监听绑定的. 3.9.0版本的xUtils使用: x. ...

  9. 励志成为python大佬的第一天

    1.编码 2.格式化字符 3.list,dict,tuple,set 4.return 5.参数

  10. OSIDP-文件管理-12(end)

    概述 文件特性:可长期存储:可在进程间共享:有特定结构. 文件系统提供对文件操作的功能接口:创建.删除.打开.关闭.读和写. 域(field):基本数据单元,一个域包含一个值. 记录(record): ...