Liste todos os arquivos em um diretório usando o DOT Net Zip?
-
25-09-2019 - |
Pergunta
Existe alguma maneira de que eu possa usar para listar todos os nomes de arquivos em um diretório específico? Por exemplo, posso especificar o diretório1 e obter o arquivo3 e o arquivo4 etc
ZipFile
-------
File1
File2
Directory1
File3
File4
Directory2
File5
File6
O objeto ZipFile possui apenas entradas, entradas classificadas e nomes de arquivos de entradas ...
Alguém?, Cheeso? :)
Solução
Não e sim. Não há uma coleção de entradas indiretor. No entanto, é uma questão simples de comparação de string para selecionar entradas que "pertencem" em um diretório específico.
Em Linq, parece o seguinte:
var selection = from e in zip.Entries
where e.FileName.StartsWith(directoryName)
select e;
Em um loop, parece assim:
var list = new List<ZipEntry>();
foreach (var e in zip.Entries) {
if (e.FileName.StartsWith(directoryName)) {
list.Add(e);
}
}
EDITAR
Você pode ter que fazer conversões para sensibilidade ao caso. No Windows, o caso não é significativo nos nomes de arquivos.
Explicação adicional: o formato ZIP não trata um diretório entrada no arquivo zip como contêiner. Não há relação de contêiner entre entradas de diretório e entradas de arquivo. A única maneira de saber se uma entrada de arquivo "pertence a" um diretório específico é examinar o nome completo da entrada do arquivo. Se o nome da entrada começar com o nome do diretório em questão, a entrada estará "no" Diretório.