Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] Deletando arquivos antigos

Recommended Posts

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.

 

 

 

http://imasters.com.br/artigo/21242/visual_studio/deletando-arquivos-antigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.