Dev (Back & Front)ARTIGO

Deletando arquivos antigos

Olá, pessoal!

Vamos aproveitar o espaço deste artigo para falar um pouco sobre apagar os arquivos
utilizando a linguagem C#.NET das últimas 48 horas. Em um outro artigo, eu já falei sobre o envio de arquivo criptografado – você pode conferir mais dos artigos na minha página do autor aqui no iMasters.

O porém é que, depois
que ele chega ao seu local desejado, é descriptografado e
descompactado. Assim, pode ser apagado depois de 48 horas. Pra isso, foi
feito uma rotina no aplicativo para apagar os mesmos depois de 48 horas.

O que vou mostrar neste artigo é a rotina que apaga o arquivo – com qualquer
extensão que desejar e após 48 horas. Lembre-se de que a pasta precisa ser passada ou
indicada.

Itens utilizados:

  • Ferramenta: Visual Studio .NET 2010
  • Linguagem C#.NET
  • Plataforma Testada: Windows Forms / Windows Services

No meu caso, existem vários arquivos com extensão .ZIP dentro de uma
pasta no servidor. Para não ficar acumulando o espaço no servidor ou
mantendo um histórico desnecessário, a rotina apaga todos.

O
primeiro passo é estender o System.IO no início da classe. Depois, saber
exatamente onde se encontra a pasta ou o caminho das pastas. No momento
da procura de arquivos, o aplicativo vai buscar todas as pastas e
subpastas – isto é, se houver pasta sobe pasta, o mesmo busca e encontra.

Para pegar as últimas 48 horas, eu pego a data de hoje e diminuo 48 horas. Se você precisar diminuir o tempo, basta colocar 24 ou 12
horas sem qualquer problema.

DateTime dataBase = DateTime.Now.AddHours(-48);

Depois de escrever o código armazenando a data em uma variável, busco todos os arquivos com extensão .ZIP.

 string[] _files = Directory.GetFiles(ENDRECO FISICO ou DE REDE, "*.ZIP", SearchOption.AllDirectories);

Lembro que, se o endereço for de rede, o seu aplicativo deve ter acesso
de leitura e escrita dentro da pasta ou diretório indicado. Como falei
anteriormente, você pode procurar por arquivos de outra extensão, isto
é, basta trocar o .ZIP para .TXT, .DOC, .XLS e outros.

No final
da linha de busca, coloquei para pegar todos os diretórios com este
comando, SearchOption.AllDirectories, assim o mesmo pega pasta sobe
pasta.

Depois de procurar todos os arquivos de forma
automática, vou fazer um foreach para verificar em cada arquivo encontrado, verificando o horário para saber se é menor que 48 horas a conta da data
atual. Se for, o mesmo é apagado.

foreach (string _file in _files) { FileInfo fs = new FileInfo(_file); File.Delete(_file); }

Note que
dentro do foreach existe um if que verifica a hora do arquivo criado
naquele diretório usando o comando CreationTime. Lembra da variável
armazenada anteriormente com a hora menos 48 horas? Pois é, agora a
mesma está sendo usada para a verificação.

A parte responsável para a verificação de horário é esta:

  if (fs.CreationTime < dataBase)

Para toda esta funcionalidade, é bom fazer um método responsável para fazer a busca, verificação e deleção. Segue o código:

private void ApagarArquivoZIP() { DateTime dataBase = DateTime.Now.AddHours(-48); try { string[] _files = Directory.GetFiles(configuracaoSistema.EnderecoCompartilhado, "*.ZIP", SearchOption.AllDirectories); foreach (string _file in _files) { FileInfo fs = new FileInfo(_file); if (fs.CreationTime < dataBase) File.Delete(_file); } }

finally{ } }

Dei o
nome de ApagarArquivoZIP e não passa qualquer parâmetro de entrada. Se o
arquivo for menor do que a hora, então o mesmo é deletado pela linha
File.Delete(_file) dentro do Code 5.

Se quiser fazer a mesma coisa para outros arquivos e outro período de tempo, basta fazer o seguinte:

private void ApagarArquivoTXT() { DateTime dataBase = DateTime.Now.AddHours(-24); try { string[] _files = Directory.GetFiles(configuracaoSistema.EnderecoCompartilhado, "*.TXT", SearchOption.AllDirectories); foreach (string _file in _files) { FileInfo fs = new FileInfo(_file); if (fs.CreationTime < dataBase) File.Delete(_file); } } finally{ } } 

Criei
outro método colocando a data menos 24 horas e na extensão do arquivo
para busca foi colocado .TXT.

Bem simples e fácil, não acha?

Espero que tenha gostado e qualquer dúvida pode entrar em contato ou deixem suas impressões, dúvidas ou perguntas nos comentários abaixo.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil