.NET

21 jul, 2011

Deletando arquivos antigos

Publicidade

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.