当前位置:首页 > 黑客接单 > 正文内容

软件压缩包后缀改成什么(免费文件压缩软件推荐)

访客2年前 (2022-05-04)黑客接单636

有关本文本文档的表明

  本文本文档根据ICSharpCode.SharpZipLib.dll的封装形式,常见的解压和压缩方式都早已包含以内,全是通过新项目实战演练累积出来的

1.基本上详细介绍

因为新项目中须要使用各种各样压缩将文件开展压缩免费下载,降低互联网的 *** 带宽,因此压缩是一个十分普遍的作用,针对压缩微软公司自身也保证了一些类库

微软公司内置压缩类ZipArchive类,合适NET FrameWork4.5才可以应用启用压缩手机软件指令实行压缩姿势,这一就必须计算机自身安裝压缩手机软件了应用第三方的压缩dll文件,一般使用较多的是(ICSharpCode.SharpZipLib.dll),免费下载dll ICSharpCode.SharpZipLib.zip

2.具体新项目

压缩单独文件,必须指定压缩级别压缩单独文件夹,必须指定压缩级别压缩好几个文件或是好几个文件夹对压缩包开展数据加密【用的相对比较少,具体情况也是有】立即解压,不用登陆密码必须登陆密码解压

2.1 压缩单独文件

写了2个方式,可以指定压缩级别,那样你的压缩包尺寸就不一样了

2.2 压缩单独文件夹

public void ZipDir(string dirToZip, string zipedFileName, int compressionLevel = 9)

2.3 压缩好几个文件或是文件夹

1

public bool ZipManyFilesOrDictorys(IEnumerable<string> folderOrFileList, string zipedFile, string password)

2.4 对压缩包开展数据加密

1

public bool ZipManyFilesOrDictorys(IEnumerable<string> folderOrFileList, string zipedFile, string password)

2.5 立即解压,不用登陆密码

1

public void UnZip(string zipFilePath, string unZipDir)

3.演试图

3.ZipHelper下载

// All Rights Reserved , Copyright (C) 2016 , ZTO , Ltd .

using System;

using System.Collections;

using System.Collections.Generic;

using System.IO;

namespace ZTO.PicTest.Utilities

using ICSharpCode.SharpZipLib.Checksums;

using ICSharpCode.SharpZipLib.Zip;

/// <summary>

/// Zip压缩协助类

/// 改动记录

/// 2015-09-16 版本号:1.0 YangHengLian 建立外键约束,留意类名的排列。

/// 2016-5-7 YangHengLian提升了可以适用好几个文件或是好几个文件夹装包成一个zip文件

/// 版本号:1.0

/// <author>

/// <name>YangHengLian</name>

/// <date>2015-09-16</date>

/// </author>

/// </summary>

public class ZipHelper

/// <summary>

/// 压缩文件夹

/// </summary>

/// <param name="dirToZip"></param>

/// <param name="zipedFileName"></param>

/// <param name="compressionLevel">压缩率0(无压缩)9(压缩率更大)</param>

public void ZipDir(string dirToZip, string zipedFileName, int compressionLevel = 9)

if (Path.GetExtension(zipedFileName) != ".zip")

zipedFileName = zipedFileName ".zip";

using (var zipoutputstream = new ZipOutputStream(File.Create(zipedFileName)))

zipoutputstream.SetLevel(compressionLevel);

Crc32 crc = new Crc32();

Hashtable fileList = GetAllFies(dirToZip);

foreach (DictionaryEntry item in fileList)

FileStream fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

byte[] buffer = new byte[fs.Length];

fs.Read(buffer, 0, buffer.Length);

// ZipEntry entry = new ZipEntry(item.Key.ToString().Substring(dirToZip.Length 1));

ZipEntry entry = new ZipEntry(Path.GetFileName(item.Key.ToString()))

DateTime = (DateTime) item.Value,

Size = fs.Length

fs.Close();

crc.Reset();

crc.Update(buffer);

entry.Crc = crc.Value;

zipoutputstream.PutNextEntry(entry);

zipoutputstream.Write(buffer, 0, buffer.Length);

/// <summary>

/// 获得全部文件

/// </summary>

/// <returns></returns>

public Hashtable GetAllFies(string dir)

Hashtable filesList = new Hashtable();

DirectoryInfo fileDire = new DirectoryInfo(dir);

if (!fileDire.Exists)

throw new FileNotFoundException("文件目录:" fileDire.FullName "沒有寻找!");

GetAllDirFiles(fileDire, filesList);

GetAllDirsFiles(fileDire.GetDirectories(), filesList);

return filesList;

/// <summary>

/// 获得一个文件夹下的全部文件夹里的文件

/// </summary>

/// <param name="dirs"></param>

/// <param name="filesList"></param>

public void GetAllDirsFiles(IEnumerable<DirectoryInfo> dirs, Hashtable filesList)

foreach (DirectoryInfo dir in dirs)

foreach (FileInfo file in dir.GetFiles("*.*"))

filesList.Add(file.FullName, file.LastWriteTime);

GetAllDirsFiles(dir.GetDirectories(), filesList);

/// <summary>

/// 获得一个文件夹下的文件

/// </summary>

/// <param name="dir">文件目录名字</param>

/// <param name="filesList">文件目录HastTable</param>

public static void GetAllDirFiles(DirectoryInfo dir, Hashtable filesList)

foreach (FileInfo file in dir.GetFiles("*.*"))

filesList.Add(file.FullName, file.LastWriteTime);

/// <summary>

/// 作用:解压zip文件格式的文档。

/// </summary>

/// <param name="zipFilePath">压缩包途径</param>

/// <param name="unZipDir">压缩包储放途径,为空时默认设置与压缩包同一级目录下,跟压缩文件同名的的文件夹名称</param>

/// <returns>缓解压力是不是取得成功</returns>

public void UnZip(string zipFilePath, string unZipDir)

if (zipFilePath == string.Empty)

throw new Exception("压缩包不可以为空!");

if (!File.Exists(zipFilePath))

throw new FileNotFoundException("压缩包不会有!");

//压缩包夹为空时默认设置与压缩包同一级目录下,跟压缩文件同名的的文件夹名称

if (unZipDir == string.Empty)

unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));

if (!unZipDir.EndsWith("/"))

unZipDir = "/";

if (!Directory.Exists(unZipDir))

Directory.CreateDirectory(unZipDir);

using (var s = new ZipInputStream(File.OpenRead(zipFilePath)))

ZipEntry theEntry;

while ((theEntry = s.GetNextEntry()) != null)

string directoryName = Path.GetDirectoryName(theEntry.Name);

string fileName = Path.GetFileName(theEntry.Name);

if (!string.IsNullOrEmpty(directoryName))

Directory.CreateDirectory(unZipDir directoryName);

if (directoryName != null && !directoryName.EndsWith("/"))

if (fileName != String.Empty)

using (FileStream streamWriter = File.Create(unZipDir theEntry.Name))

int size;

byte[] data = new byte[2048];

while (true)

size = s.Read(data, 0, data.Length);

if (size > 0)

streamWriter.Write(data, 0, size);

else

break;

/// <summary>

/// 缩小单独文档

/// </summary>

/// <param name="filePath">被缩小的文件目录(包括文件路径),文档的全途径</param>

/// <param name="zipedFileName">缩小后的文件目录(包括文件路径),储存的文件目录</param>

/// <param name="compressionLevel">压缩系数0(无缩小)到 9(压缩系数更大)</param>

public void ZipFile(string filePath, string zipedFileName, int compressionLevel = 9)

// 假如文档沒有寻找,则出错

if (!File.Exists(filePath))

throw new FileNotFoundException("文档:" filePath "沒有寻找!");

// 假如缩小后名称为空就默认设置应用源代码名字做为压缩包名字

if (string.IsNullOrEmpty(zipedFileName))

string oldValue = Path.GetFileName(filePath);

if (oldValue != null)

zipedFileName = filePath.Replace(oldValue, "") Path.GetFileNameWithoutExtension(filePath) ".zip";

// 假如缩小后的文件目录扩展名并不是zip,便是再加上zip,避免是一个错码文档

if (Path.GetExtension(zipedFileName) != ".zip")

zipedFileName = zipedFileName ".zip";

// 假如特定部位文件目录不会有,建立该文件目录 C:\Users\yhl\Desktop\大汉三通

string zipedDir = zipedFileName.Substring(0, zipedFileName.LastIndexOf("\\", StringComparison.Ordinal));

if (!Directory.Exists(zipedDir))

Directory.CreateDirectory(zipedDir);

// 被压缩包名字

string filename = filePath.Substring(filePath.LastIndexOf("\\", StringComparison.Ordinal) 1);

var streamToZip = new FileStream(filePath, FileMode.Open, FileAccess.Read);

var zipFile = File.Create(zipedFileName);

var zipStream = new ZipOutputStream(zipFile);

var zipEntry = new ZipEntry(filename);

zipStream.PutNextEntry(zipEntry);

zipStream.SetLevel(compressionLevel);

var buffer = new byte[2048];

Int32 size = streamToZip.Read(buffer, 0, buffer.Length);

zipStream.Write(buffer, 0, size);

try

while (size < streamToZip.Length)

int sizeRead = streamToZip.Read(buffer, 0, buffer.Length);

zipStream.Write(buffer, 0, sizeRead);

size = sizeRead;

finally

zipStream.Finish();

zipStream.Close();

streamToZip.Close();

/// <summary>

/// 缩小单独文档

/// </summary>

/// <param name="fileToZip">要实现缩小的文件夹名称,全途径</param>

/// <param name="zipedFile">缩小后形成的压缩包名,全途径</param>

public void ZipFile(string fileToZip, string zipedFile)

// 假如文档沒有寻找,则出错

if (!File.Exists(fileToZip))

throw new FileNotFoundException("特定要缩小的文档: " fileToZip " 不会有!");

using (FileStream fileStream = File.OpenRead(fileToZip))

byte[] buffer = new byte[fileStream.Length];

fileStream.Read(buffer, 0, buffer.Length);

fileStream.Close();

using (FileStream zipFile = File.Create(zipedFile))

using (ZipOutputStream zipOutputStream = new ZipOutputStream(zipFile))

// string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") 1);

string fileName = Path.GetFileName(fileToZip);

var zipEntry = new ZipEntry(fileName)

DateTime = DateTime.Now,

IsUnicodeText = true

zipOutputStream.PutNextEntry(zipEntry);

zipOutputStream.SetLevel(5);

zipOutputStream.Write(buffer, 0, buffer.Length);

zipOutputStream.Finish();

zipOutputStream.Close();

/// <summary>

/// 缩小好几个文件目录或文档

/// </summary>

/// <param name="folderOrFileList">待缩小的文件或是文档,全途径文件格式,是一个结合</param>

/// <param name="zipedFile">缩小后的文件夹名称,全途径文件格式</param>

/// <param name="password">压宿登陆密码</param>

/// <returns></returns>

public bool ZipManyFilesOrDictorys(IEnumerable<string> folderOrFileList, string zipedFile, string password)

bool res = true;

using (var s = new ZipOutputStream(File.Create(zipedFile)))

s.SetLevel(6);

if (!string.IsNullOrEmpty(password))

s.Password = password;

foreach (string fileOrDir in folderOrFileList)

//是文件夹名称

if (Directory.Exists(fileOrDir))

res = ZipFileDictory(fileOrDir, s, "");

else

//文档

res = ZipFileWithStream(fileOrDir, s);

s.Finish();

s.Close();

return res;

/// <summary>

/// 带缩小流压缩单独文档

/// </summary>

/// <param name="fileToZip">要实现缩小的文件夹名称</param>

/// <param name="zipStream"></param>

/// <returns></returns>

private bool ZipFileWithStream(string fileToZip, ZipOutputStream zipStream)

//假如文档沒有寻找,则出错

if (!File.Exists(fileToZip))

throw new FileNotFoundException("特定要缩小的文档: " fileToZip " 不会有!");

//FileStream fs = null;

FileStream zipFile = null;

ZipEntry zipEntry = null;

bool res = true;

try

zipFile = File.OpenRead(fileToZip);

byte[] buffer = new byte[zipFile.Length];

zipFile.Read(buffer, 0, buffer.Length);

zipFile.Close();

zipEntry = new ZipEntry(Path.GetFileName(fileToZip));

zipStream.PutNextEntry(zipEntry);

zipStream.Write(buffer, 0, buffer.Length);

catch

res = false;

finally

if (zipEntry != null)

if (zipFile != null)

zipFile.Close();

GC.Collect();

GC.Collect(1);

return res;

/// <summary>

/// 递归法压缩文件夹方式

/// </summary>

/// <param name="folderToZip"></param>

/// <param name="s"></param>

/// <param name="parentFolderName"></param>

private bool ZipFileDictory(string folderToZip, ZipOutputStream s, string parentFolderName)

bool res = true;

ZipEntry entry = null;

FileStream fs = null;

Crc32 crc = new Crc32();

try

//建立现阶段文件夹名称

entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) "/")); //再加上 “/” 才会当作是文件夹名称建立

s.PutNextEntry(entry);

s.Flush();

//先压缩包,再递归法压缩文件夹

var filenames = Directory.GetFiles(folderToZip);

foreach (string file in filenames)

//开启压缩包

fs = File.OpenRead(file);

byte[] buffer = new byte[fs.Length];

fs.Read(buffer, 0, buffer.Length);

entry = new ZipEntry(Path.Combine(parentFolderName, Path.GetFileName(folderToZip) "/" Path.GetFileName(file)));

entry.DateTime = DateTime.Now;

entry.Size = fs.Length;

fs.Close();

crc.Reset();

crc.Update(buffer);

entry.Crc = crc.Value;

s.PutNextEntry(entry);

s.Write(buffer, 0, buffer.Length);

catch

res = false;

finally

if (fs != null)

fs.Close();

if (entry != null)

GC.Collect();

GC.Collect(1);

var folders = Directory.GetDirectories(folderToZip);

foreach (string folder in folders)

if (!ZipFileDictory(folder, s, Path.Combine(parentFolderName, Path.GetFileName(folderToZip))))

return false;

return res;

扫描二维码推送至手机访问。

版权声明:本文由黑客24小时在线接单网站发布,如需转载请注明出处。

本文链接:https://www.cn-sl.com/16210.html

标签: 后缀
分享给朋友:

“软件压缩包后缀改成什么(免费文件压缩软件推荐)” 的相关文章

今天中行外汇实时牌价(招商银行外汇牌价实时汇率)

31澳大利亚元100人民币649。指银行买入外汇时所今天使用的汇率。点击“外汇牌价”链接,怎样查看中国银行的外汇汇率表。 sourcedb/whpj/根据今日外汇牌价,在地址栏输.在对应汇率后点击"查看历史。 日圆兑人民币,仅供参考。金卡打5折,意味着你从银行买美元,急! 就今天的实时,应答时间:2...

东风日产尼桑奇骏图片 「日产奇骏越野车图片」

少/严/下,如今 本拆的日产春风 骑骏那边 购的到,偶骏废弃 一辆售患上那么孬的车型么?当然没有是。春风 日产别致 骏卖价是若干 ?买车现金劣惠。您便 晓得了。留住的原来 僧桑偶骏没有行那么少。 而偏偏野用化车型。偶骏是春风 日产旗高松凑型SUV,车顶叙车首的零体棱角取横披的后年夜 灯,楼主说的应该...

vc币价是多少(我有10个比特币怎么卖掉)

OKEx比特币生意业务 所的脚绝费寰球最低.点击,本日 此时比特币价钱  二 三 四 九元,您当然否以一个一个的售没,缘故原由 您懂的。 如今 是 四0- 五0阁下 。比特币是来博门的生意业务 仄台生意 的,p/ 二0 一 一0 六 二0/ 二 六-有 一 七 六 二 八 二0 九jpg,杂外文的,...

砥砺怎么读(砥砺怎么读拼音)

  外国消息 起源 :光亮 日报  二0 一 七年0 七月0 四日 0 六: 一 五   A-A+      扫一扫 脚机 浏览   尔要分享   QQ空间新浪微专腾讯微专QQ微疑   本题目 :   【砥砺奋入的五年·平易近 熟外的平易近 声】   “修筑是否 浏览的,街区是合适 安步 的,私园是...

江西抚州2地发布疫情防控通报

  起源 |都会 现场综折魅力抚州下新、东城宣布   已经许可 没有患上转载 如增除了起源 必究      闭于湖北省娄底市   境中输出新冠阴性检测者   稀交职员 马某、田某、梁某、潘某等   四人行为 轨迹通知布告    二0 二 一年 九月 二 七日下昼  五:00,尔部支...

朴槿惠获释 粉丝挥应援棒喊我爱你

择要 : 二0 二 一年 一 二月 三 一日(阴历  二0 二 一年 一 一月 二 八日),朴槿惠获释粉丝挥应援棒喊尔爱您。 朴槿惠获释粉丝挥应援棒喊尔爱您。朴槿惠获释刹时 :粉丝挥舞应援棒全喊“尔爱您”,年夜 妈泣如雨下 。 南京空儿 二0 二 一年 一 二月 三 一日,韩国前总统朴槿惠于本地 空...

评论列表

泪灼热耳
2年前 (2022-05-28)

获得全部文件/// </summary>/// <returns></returns>public Hashtable GetAllFies(string dir){Hashtable filesList = new Hashtable();Dir

痴者惑心
2年前 (2022-05-29)

YangHengLian 建立外键约束,留意类名的排列。/// 2016-5-7 YangHengLian提升了可以适用好几个文件或是好几个文件夹装包成一个zip文件////// 版本号:1.0////// <author&g

边侣乙白
2年前 (2022-05-29)

hor>/// </summary>public class ZipHelper{/// <summary>/// 压缩文件夹/// </summary&

晴枙矫纵
2年前 (2022-05-29)

y){throw new Exception("压缩包不可以为空!");}if (!File.Exists(zipFilePath)){throw new FileNotFoundExcept

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。