Нет, я полностью понимаю, и я прошу прощения, если то, что я спрашиваю, выходит таким образом. То, что вы предоставили, великолепно и очень мне помогло. Я искал способы заархивировать папки вместе, но все, что я нахожу, это способы заархивировать файлы.
у заархивировать файлы из определенной папки, используяZipFile.CreateFromDirectory
в следующем тестовом коде (я использовал этот код только для проверки работы архива):
// Where the files are located
string strStartPath = txtTargetFolder.Text;
// Where the zip file will be placed
string strZipPath = @"C:\Users\smelmo\Desktop\testFinish\" + strFileNameRoot + "_" + txtDateRange1.Text.Replace(@"/", "_") + "_" + txtDateRange2.Text.Replace(@"/", "_") + ".zip";
ZipFile.CreateFromDirectory(strStartPath, strZipPath);
Однако это объединяет ВСЕ содержимое папки. Я пытаюсь сжать определенные элементы в папке, используяZipArchive
в следующем коде:
// Where the files are located
string strStartPath = txtTargetFolder.Text;
// Where the zip file will be placed
string strZipPath = @"C:\Users\smelmo\Desktop\testFinish\" + strFileNameRoot + "_" + txtDateRange1.Text.Replace(@"/", "_") + "_" + txtDateRange2.Text.Replace(@"/", "_") + ".zip";
using (ZipArchive archive = ZipFile.OpenRead(strStartPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (!(entry.FullName.EndsWith(".TIF", StringComparison.OrdinalIgnoreCase)))
{
entry.ExtractToFile(Path.Combine(strZipPath, entry.FullName));
}
}
}
Это дает ошибку вZipFile.OpenRead(strStartPath)
, Почему я могу получить доступ к точной папке в первом блоке кода, но не во втором? Или есть более простой способ поиска по папке и архивирования только определенных элементов?