using Masuit.Tools.Systems;
using SharpCompress.Common;
using System.Collections.Generic;
using System.IO;
namespace Masuit.Tools.Files;
///
/// 7z压缩
///
public interface ISevenZipCompressor
{
///
/// 解压文件,自动检测压缩包类型
///
/// rar文件
/// 解压到...
/// 忽略空文件夹
void Decompress(string compressedFile, string dir = "", bool ignoreEmptyDir = true);
///
/// 压缩多个文件
///
/// 多个文件路径,文件或文件夹
/// 压缩到...
/// 压缩包内部根文件夹
///
void Zip(IEnumerable files, string zipFile, string rootdir = "", ArchiveType archiveType = ArchiveType.Zip);
///
/// 压缩多个文件
///
/// 多个文件流
/// 压缩到...
///
/// 是否需要释放所有流
void Zip(DisposableDictionary streams, string zipFile, ArchiveType archiveType = ArchiveType.Zip, bool disposeAllStreams = false);
///
/// 压缩文件夹
///
/// 文件夹
/// 压缩到...
/// 压缩包内部根文件夹
///
public void Zip(string dir, string zipFile, string rootdir = "", ArchiveType archiveType = ArchiveType.Zip);
///
/// 将多个文件压缩到一个文件流中,可保存为zip文件,方便于web方式下载
///
/// 多个文件路径,文件或文件夹,或网络路径http/https
///
///
/// 文件流
PooledMemoryStream ZipStream(IEnumerable files, string rootdir = "", ArchiveType archiveType = ArchiveType.Zip);
///
/// 将多个文件压缩到一个文件流中,可保存为zip文件,方便于web方式下载
///
/// 多个文件流
///
/// 是否需要释放所有流
/// 文件流
PooledMemoryStream ZipStream(DisposableDictionary streams, ArchiveType archiveType = ArchiveType.Zip, bool disposeAllStreams = false);
///
/// 将文件夹压缩到一个文件流中,可保存为zip文件,方便于web方式下载
///
/// 文件夹
///
///
/// 文件流
public PooledMemoryStream ZipStream(string dir, string rootdir = "", ArchiveType archiveType = ArchiveType.Zip);
}