src/DotNetCommon.Compress/CompressHelper.cs
(开头部分) 14KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using SharpCompress.Archives;
using SharpCompress.Common;
using SharpCompress.Readers;
using System;
using System.IO;
using System.Linq;
using SharpCompress.Archives.GZip;
using SharpCompress.Compressors.BZip2;
using DotNetCommon.Extensions;
using SharpCompress.Archives.Zip;
using System.Collections.Generic;
using System.Text;
namespace DotNetCommon.Compress
{
/// <summary>
/// 压缩和解压缩帮助类, 引用SharpZipLib
/// </summary>
public class CompressHelper
{
#region 压缩文件
private static void save(ZipArchive archive, Stream outputStream)
{
archive.SaveTo(outputStream, new SharpCompress.Writers.WriterOptions(CompressionType.Deflate)
{
ArchiveEncoding = new ArchiveEncoding(Encoding.UTF8, Encoding.UTF8),
});
}
/// <summary>
/// 从流中压缩到流,示例:
/// <code>
/// CompressHelper.CompressZip(destStream, new Dictionary<string, Stream>
/// {
/// {"中文B222.txt",stream1 },
/// {"testfolder/testsubfolder-suba222.txt",stream2 },
/// {"testfolder-a.txt",stream3 }
/// });
/// </code>
/// </summary>
public static void CompressZip(Stream outputStream, Dictionary<string, Stream> dic)
{
Ensure.NotNull(outputStream, nameof(outputStream));
Ensure.NotNullOrEmpty(dic);
using (var archive = ZipArchive.Create())
{
foreach (var item in dic) archive.AddEntry(item.Key, item.Value);
save(archive, outputStream);
}
}
/// <summary>
/// 将指定多个文件压缩到一个文件,示例:
/// <code>
/// CompressHelper.CompressZip(destFilePath, new Dictionary<string, string>
/// {
/// {"中文B222.txt","c:/testfolder/中文B.txt" },
/// {"testsubfolder/suba222.txt","c:/testfolder/testsubfolder/testsubfolder-suba.txt" },
/// {"testfolder-a.txt","c:/testfolder/testfolder-a.txt" }
/// });
后面还有 268 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
