2010-08-03 20 views
0

Y at-il de toute façon dans Dot Net Zip que je peux utiliser pour lister tous les noms de fichiers dans un répertoire spécifique? Par exemple, je peux spécifier Répertoire1 et obtenir Fichier3 et fichier4 etcLister tous les fichiers dans un répertoire à l'aide de Dot Net Zip?

ZipFile 
------- 

File1 
File2 
Directory1 
    File3 
    File4 
Directory2 
    File5 
    File6 

objet ZipFile n'a que des entrées, des entrées triées et entrées des noms de fichier ...

Tout le monde ?, Cheeso? :)

+0

Avez-vous regardé ici? http://stackoverflow.com/questions/2324626/extract-a-zip-file-programmatically-by-dotnetzip-library –

+0

Merci Edward, mais je veux simplement que les noms des fichiers :) Je pense que je pourrais faire quelque chose par un peu de manipulation de chaîne de bits. Les dossiers se terminent par un "/" –

Répondre

1

Non, et oui. Il n'y a pas de collection EntriesInDirectory. Cependant, il est simple de comparer les chaînes pour sélectionner les entrées qui "appartiennent" à un répertoire particulier.

Dans LINQ, il ressemble à ceci:

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

Dans une boucle, il ressemble à ceci:

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

EDIT

Vous pourriez avoir à faire des conversions pour le cas sensibilité. Sous Windows, le cas n'est pas significatif dans les noms de fichiers.

Explication supplémentaire: le format zip ne traite pas un répertoire dans le fichier zip en tant que conteneur. Il n'y a pas de relation de conteneur entre les entrées d'annuaire et les entrées de fichier. La seule façon de savoir si une entrée de fichier "appartient" à un répertoire particulier est d'examiner le nom complet de l'entrée du fichier. Si le nom de l'entrée commence par le nom du répertoire en question, l'entrée est "dans" le répertoire.