Список всех файлов в каталоге, используя Dot Net Zip? - PullRequest
0 голосов
/ 04 августа 2010

Есть ли так или иначе в Dot Net Zip, что я могу использовать, чтобы перечислить все имена файлов в определенном каталоге?Например, я могу указать Directory1 и получить File3 и File4 и т. Д.

ZipFile
-------

File1
File2
Directory1
     File3
     File4
Directory2
     File5
     File6

Объект ZipFile имеет только записи, отсортированные записи и имена файлов записей ...

Кто-нибудь ?, Cheeso?:)

1 Ответ

1 голос
/ 08 ноября 2010

Нет и да. Коллекции EntriesInDirectory не существует. Тем не менее, это просто вопрос сравнения строк, чтобы выбрать записи, которые «принадлежат» в определенном каталоге.

В LINQ это выглядит так:

var selection = from e in zip.Entries 
    where e.FileName.StartsWith(directoryName)
    select e;

В цикле for это выглядит так:

var list = new List<ZipEntry>();
foreach (var e in zip.Entries) {
  if (e.FileName.StartsWith(directoryName)) {
    list.Add(e);
  }
}

РЕДАКТИРОВАТЬ

Возможно, вам придется выполнить преобразования для чувствительности к регистру. В Windows регистр не имеет значения в именах файлов.

Дальнейшее объяснение: формат zip не рассматривает запись directory в файле zip как контейнер. Контейнерных связей между записями каталога и записями файла не существует. Единственный способ определить, принадлежит ли запись файла в конкретный каталог, - это проверить полное имя записи файла. Если имя записи начинается с имени рассматриваемого каталога, то запись находится «в» каталоге.

...