一、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. docker命令、简单创建镜像、dockerfile实战、Dockerfile语法、镜像分层、Volume介绍

    docker的常用命令: docker pull 获取imagedocker build 创建imagedocker images 列出imagedocker run 运行containerdocke ...

  2. iOS自动化测试

    学习步骤: 1.能够搭建iOS自动化测试所需要的环境 2.能够使用模拟器进行iOS自动化测试 3.能够使用真机进行iOS自动化测试 一.环境搭建 应用场景 想要进行iOS自动化测试,前提条件需要进行环 ...

  3. 操作系统|01.Windows

    Windows基础 1.系统目录 1.1 C盘根目录 Data:Windows系统目录,放置程序的使用数据.设置等文件. MyDrivers:驱动程序文件夹. PerfLogs:日志文件夹. Prog ...

  4. excel的几个常用方法

    --笔记开始: 1.if(条件,真值,假值),类似于编程语言中的三元运算符.条件为真时返回真值,条件为假时返回假值. 2.match(目标值,查找区域,查找类型),一般查找类型为0(等值查找),查找区 ...

  5. CvT: Introducing Convolutions to Vision Transformers-首次将Transformer应用于分类任务

    CvT: Introducing Convolutions to Vision Transformers Paper:https://arxiv.org/pdf/2103.15808.pdf Code ...

  6. module ‘pip‘ has no attribute ‘pep425tags‘的解决方案

    可行方案: E:\pyth\Anaconda\envs>python -m pip debug --verboseWARNING: This command is only meant for ...

  7. CSS vw与vh动态设置元素的高度宽度

    做为一个前端开发者,总有一天我们要设置页面某一部分内容自适应浏览器窗口大小,下面分享下使用vw和vh的设置方式, 一波解释: v(即viewport):可视窗口,也就是浏览器窗口大小.vw Viewp ...

  8. IDEA Maven 项目报错 java: 程序包org.springframework.beans.factory.annotation不存在

    idea 刚把项目导进去的时候,点击运行,import的好多包都报红,所有的文件的Maven依赖包都没导入进去. 但只是第一个报错是: java: 程序包org.springframework.bea ...

  9. FtpClient上传文件异常:java.net.SocketException: Connection reset

    FtpClient上传文件异常:java.net.SocketException: Connection reset 这问题折磨我快一天了,下午这会儿终于解决了,问题不在程序错误,原因还是出在上传图片 ...

  10. kafka 学习

    https://kafka.apache.org/quickstart C:\W_O_R_K\kafka_2.12-2.2.0\kafka_2.12-2.2.0\bin\windows\zookeep ...