При использовании DotNetZip столкнулся с непонятным поведением библиотеки если путь источник это весь диск ,например: c:\ или d:\
ZipFile zip = new ZipFile("d:\arhiv.zip", Encoding.UTF8); zip.RemoveSelectedEntries("*.xls"); zip.AddSelectedFiles("*", "c:\", "Arhive", true); zip.Save();
В результате будет создан пустой архив. Начал копать, оказывается, в исходниках DotNetZIp в файле ZIpFile.Selector.cs авторы исправили авторский багрепорт под номером 9176 (проблема со слэшем ‘\’ в конце пути)
// workitem 9176 while (directoryOnDisk.EndsWith("\\")) directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1);
После отработки directoryOnDisk = «C:», и функция выбора файлов возвращает пустой результат. Пришлось немного изменить изменить исходник, добавив:
// workitem 9176 //while (directoryOnDisk.EndsWith("\\")) directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1); if (directoryOnDisk.EndsWith("\\") && (directoryOnDisk.Trim().Length>3) directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1);
Теперь все с корневого раздела данные ищутся как надо.