这是我用于压缩文件的方法:
private void Compressions(string zipFile,string sources)
{
try
{
string zipFileName = zipFile;
string source = sources;
string output = @"c:temp";
string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86) + "\Diagnostic Tool\7z.dll";
if (File.Exists(programFilesX86))
{
SevenZipExtractor.SetLibraryPath(programFilesX86);
}
else
{
string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\7z.dll";
SevenZipExtractor.SetLibraryPath(path);
}
string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) + "\Diagnostic Tool\7z.dll";
if (File.Exists(programFiles))
{
SevenZipExtractor.SetLibraryPath(programFiles);
}
else
{
if (File.Exists(programFilesX86))
{
SevenZipExtractor.SetLibraryPath(programFilesX86);
}
else
{
string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\7z.dll";
SevenZipExtractor.SetLibraryPath(path);
}
}
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.ArchiveFormat = OutArchiveFormat.Zip;
compressor.CompressionMode = CompressionMode.Create;
compressor.TempFolderPath = System.IO.Path.GetTempPath();
string t = Path.Combine(output, zipFileName);
compressor.CompressDirectory(source, t,"*.txt");
this.explorerWindow = Process.Start("explorer", String.Format("/select,{0}", t));
this.TopMost = true;
}
catch (Exception err)
{
Logger.Write("Zip file error: " + err.ToString());
}
}
这是压缩的行:
compressor.CompressDirectory(source, t,"*.txt");
我尝试添加"*.txt",这样它只会压缩文本文件,但会压缩许多其他格式。
当我做:压缩机。压缩目录(源,消息说:字符串搜索模式
我只想压缩文本文件。
编辑**问题是它压缩任何类型的文件,而不仅仅是文本文件!搜索模式"*.txt"不起作用,只压缩文本文件,而压缩任何文件扩展名。
请检查方法的签名,并确保调用的重载正确。
三字符串参数过载定义为:
public void CompressDirectory(
string directory, string archiveName,
string password)
您的代码没有提供搜索模式,而是设置了密码"*.txt"
使用一个接受搜索模式的重载,例如:
public void CompressDirectory(
string directory, string archiveName,
string searchPattern, bool recursion)
或
public void CompressDirectory(
string directory, string archiveName,
string password = "", string searchPattern = "*", bool recursion = true)