C# - ZIP 压缩流
C# - ZIP 压缩流
参考资料
- https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.ziparchive?view=netframework-4.8
- https://zh.wikipedia.org/wiki/ZIP格式
Overview
ZIP流是在NetFramework4.5 引入的目的是为了能够更好的操作ZIP文件,进行压缩解压等操作。与ZIP流相关的几个类是:
- ZipArchive 代表一个ZIP的压缩包文件
- ZipArchiveEntry 代表ZIP压缩包中的一个文件
- ZipFile 提供了一系列的静态方法来帮助用户更方便地操作ZIP文件,类似于File类的作用。
PS: 在使用之前请先添加程序集引用System.IO.Compression与System.IO.Compression.FileStream
ZipArchive常见操作
创建一个ZIP文件
using (FileStream fs = new FileStream("myZip.zip", FileMode.Create))
{
//打开压缩包
using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Create))
{
//创建一个条目
ZipArchiveEntry entry = zipArchive.CreateEntry("HelloWorld.txt");
//在条目中写入内容
using (StreamWriter writer = new StreamWriter(entry.Open(), Encoding.Default))
{
writer.Write("I am 鲁迅认识的那只猹! Hello World");
}
}
}
向现有的ZIP压缩包中添加文件
using (FileStream fs = new FileStream("myZip.zip", FileMode.Open))
{
//打开压缩包,Mode 为Update模式
using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Update))
{
//创建一个条目
ZipArchiveEntry entry = zipArchive.CreateEntry("AppendFile.txt");
//在条目中写入内容
using (StreamWriter writer = new StreamWriter(entry.Open(), Encoding.Default))
{
writer.Write("这是追加的内容!");
}
}
}
解压ZIP压缩包
using (FileStream fs = new FileStream("myZip.zip", FileMode.Open))
{
//打开压缩包,Mode 为Update模式
using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Update))
{
//创建一个用来存放解压后的文件的目录
Directory.CreateDirectory("myZip");
//将所有的条目解压出来
foreach (var item in zipArchive.Entries)
{
//解压文件
item.ExtractToFile(@"myZip\" + item.Name);
}
}
}
ZipFile
| 方法 | 解释 |
|---|---|
| FileZip.CreateFromDirectory | 从一个目录创建ZIP压缩文件 |
| FileZip.ExtractToDirectory | 将ZIP压缩文件解压到目录中 |
| FileZip.Open | 打开一个ZIP压缩文件 |
| FileZip.OpenRead | 打开一个读取模式的ZIP压缩文件 |
ZipFileExtensions
ZipFileExtensions 为ZipArchive 和 ZipArchiveEntry 提供了一些更简便的方法,具体可以查看官方文档
C# - ZIP 压缩流的更多相关文章
- ZIP文件流压缩和解压
前面写了一篇文章 "ZIP文件压缩和解压", 介绍了" SharpZipLib.Zip " 的使用, 最近的项目中,在使用的过程中, 遇到一些问题. 比如, 现 ...
- C# 对多个文件进行zip压缩
本文使用的ICSharpCode.SharpZipLib.dll类库来实现文件压缩,你可以通过Nuget来安装此类库,或者到搜索引擎去搜索一下遍地都是.类库下载下来之后,添加到项目引用就可以了.下面这 ...
- [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...
- Zip压缩和解压缩
这个功能完全依靠一个第三方的类,ICSharpCode.SharpZipLib.dll,只是在网上搜了大半天,都没有关于这个类的详细解释,搜索的demo也是各种错误,感觉作者完全没有跑过,就那么贸贸然 ...
- java ZIP压缩文件
问题描述: 使用java ZIP压缩文件和目录 问题解决: (1)单个文件压缩 注: 以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...
- ZIP压缩输入/输出流
ZIP是压缩文件的格式,使用ZIP可以节省空间 java将压缩/解压缩文件的方法都封装在java.util.zip包下,java实现了I/O数据流和网络数据流的单一接口,所以实现起来比较容易. 主要的 ...
- java压缩流
java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.
- Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)
Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...
- java将文件打包成ZIP压缩文件的工具类实例
package com.lanp; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...
随机推荐
- String.getBytes()方法中的中文编码问题
得到一个操作系统默认的编码格式的字节数组.这表示在不同的操作系统下,返回的东西不一样! byte[] a= "中".getBytes() String.getBytes(Strin ...
- 【JUC】2.synchronized
synchronized关键字的用法也不做太多笔记了,简单回顾一下: synchronized三种使用方式: 修饰实例方法: 线程获取的是当前调用此方法的对象的对象头:即:锁是当前对象: public ...
- nginx编译安装和功能介绍
nginx介绍 nginx: engine X,是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004 ...
- 商汤开源的mmdetection技术报告
目录 1. 简介 2. 支持的算法 3. 框架与架构 6. 相关链接 前言:让我惊艳的几个库: ultralytics的yolov3,在一众yolov3的pytorch版本实现算法中脱颖而出,收到开发 ...
- MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制
/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...
- springboot中用来进行查看错误日志的logback文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 从高到地低 OFF . FATAL . ERROR . ...
- burp插件debug
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2. ...
- DateTime函数
一.初始化: DateTime dt = , , ); DateTime dt1 = DateTime.Now; DateTime dt2 = DateTime.Today; DateTime dt3 ...
- unittest----assert断言的使用
unittest的官发文档链接:https://docs.python.org/2.7/library/unittest.html#unittest.TestCase 先介绍下unittest的基本使 ...
- sql server 时间处理函数 datediff() 和getdate()
一: DATEDIFF() 定义和用法 DATEDIFF() 函数返回两个日期之间的时间. 语法 DATEDIFF(datepart,startdate,enddate) startdate 和 en ...