Usuário com melhor resposta
Pesquisa não reconhece arquivo .zip como arquivo válido dentro de uma pasta

Pergunta
-
Fiz essa rotina para deletar pastas vazias, sem arquivos dentro.
foreach(var folder in folder_new) { if (Directory.Exists(folder)) { if (Directory.GetFiles(folder, "*", SearchOption.AllDirectories).Length == 0) { Directory.Delete(folder, true); } } }
Até aí beleza, exceto um problema. Quando tenho uma pasta apenas com um arquivo
.zip
dentro, ele deleta o folder, por achar que o folder está vazio. Como eu contorno isso?Ex: Tenho essa árvore de pastas:
web\ws\tiss\v3\02\00
E dentro da pasta
00
, tenho o arquivoTISS.zip
. A pasta ws e todo seu conteúdo(subfolders) é deletada.string[] files_new = Directory.GetFiles(path_files, "*", SearchOption.AllDirectories); string[] folder_new = Directory.GetDirectories(path_files, "*", SearchOption.AllDirectories);
- Editado pnet segunda-feira, 7 de março de 2016 14:23
Respostas
-
Este exemplo aqui se comporta da forma que você precisa
http://stackoverflow.com/questions/2811509/c-sharp-remove-all-empty-subdirectories
static void Main(string[] args) { processDirectory(@"c:\temp"); } private static void processDirectory(string startLocation) { foreach (var directory in Directory.GetDirectories(startLocation)) { processDirectory(directory); if (Directory.GetFiles(directory).Length == 0 && Directory.GetDirectories(directory).Length == 0) { Directory.Delete(directory, false); } } }
- Marcado como Resposta pnet quarta-feira, 9 de março de 2016 21:37
Todas as Respostas
-
Este exemplo aqui se comporta da forma que você precisa
http://stackoverflow.com/questions/2811509/c-sharp-remove-all-empty-subdirectories
static void Main(string[] args) { processDirectory(@"c:\temp"); } private static void processDirectory(string startLocation) { foreach (var directory in Directory.GetDirectories(startLocation)) { processDirectory(directory); if (Directory.GetFiles(directory).Length == 0 && Directory.GetDirectories(directory).Length == 0) { Directory.Delete(directory, false); } } }
- Marcado como Resposta pnet quarta-feira, 9 de março de 2016 21:37
-
Olá Cesar, seu exemplo é bem limpo, porém continua a mesma coisa aqui comigo, ou seja, há o arquivo TISS.zip e a pasta e suas subpastas são deletadas. Essa é a árvore:
web -> ws -> tiss -> v3 -> 2 -> 00 -> TISS_V3.zip
A pasta ws e todas as suas subpastas são deletadas.
-
-
Pessoal, eu consegui apenas usando o DirectoryInfo. Porém preciso agora é melhorar meu método. Ou seja, passar de Directory para DirectoryInfo.
private void processaDiretorio(string inicio)
{
foreach(var diretorio in Directory.GetDirectories(inicio))
{
processaDiretorio(diretorio);
if (Directory.GetFiles(diretorio).Length == 0 &&
Directory.GetDirectories(diretorio).Length == 0)
{
Directory.Delete(diretorio, false);
}
}
}