Stack Overflow em Português Asked on November 8, 2021
Como fazer o código não apagar um arquivo específico que eu quero entre os .exe
que eu pego. Exemplo: quero que ele não apague “teste.exe”, mas que ainda continue apagando todo o resto.
Segue o código:
string[] arquivos = Directory.GetFiles(@"C:tempae", "*.exe", SearchOption.TopDirectoryOnly);
foreach (string arquivo in arquivos)
{
//nome = Path.GetFileName(arquivo);
File.Delete(arquivo);
}
Segue mais uma opção utilizando linq
string[] arquivos = Directory.GetFiles(@"C:tempae", "*.exe", SearchOption.TopDirectoryOnly).Where(p => p != "teste.exe").ToArray();
foreach (string arquivo in arquivos)
File.Delete(arquivo);
Answered by Barbetta on November 8, 2021
foreach (var arquivo in Directory.GetFiles(@"C:tempae", "*.exe", SearchOption.TopDirectoryOnly) {
if (Path.GetFileName(arquivo) != "teste.exe") File.Delete(arquivo);
}
Se preferir pode fazer com LINQ, eu faria, porque é mais performático neste caso. Fazendo certo apesar de ter um pouco de overhead pela infraestrutura do LINQ ele faz apenas um loop. Na resposta do Barbetta ele faz 2 loops, um pra pegar os arquivos e outro para filtrar. O Enumerate
não executa loop algum.
foreach (var arquivo in Directory.EnumerateFiles(@"C:tempae", "*.exe", SearchOption.TopDirectoryOnly).Where(f => Path.GetFileName(f) != "teste.exe") File.Delete(arquivo);
Answered by Maniero on November 8, 2021
Você pode usar um condicional dentro do próprio foreach, assim:
string[] arquivos = Directory.GetFiles(@"C:tempae", "*.exe", SearchOption.TopDirectoryOnly);
foreach (string arquivo in arquivos)
{
var nome = Path.GetFileName(arquivo);
if (nome != "teste.exe")
File.Delete(arquivo);
}
Answered by Phiter on November 8, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP