Как я могу указать строку searchPattern с помощью компрессора 7z?
Это методы, которые я использую для сжатия файлов:
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", чтобы он сжимал только текстовые файлы, но сжимал многие другие форматы.
Когда я делаю: compress.CompressDirectory (source, t, в сообщении говорится: string searchPattern
Я хочу сжать только текстовые файлы.
Редактировать ** Проблема в том, что он сжимает любой тип файлов, а не только текстовые файлы! Шаблон поиска "*.txt" не работает, вместо этого сжимает только текстовые файлы, сжимает любые расширения файлов.
1 ответ
Пожалуйста, проверьте подпись метода и убедитесь, что вы вызываете правильную перегрузку.
Перегрузка трех строковых параметров определяется как:
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)