Deletando todos os arquivos
Olá pessoal, hoje eu gostaria de falar sobre apagar os arquivos utilizando a linguagem C#.NET das últimas 48 horas. Estes dias escrevi um artigo que falava sobre o envio de arquivo criptografado, mas depois que o mesmo 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 na rotina que apaga o arquivo com qualquer extensão que desejar e após 48 horas, a pasta precisa ser passada ou indicada.
Usado:
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 é extender 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 às 48 horas. Se você precisar diminuir o tempo, basta colocar 24 ou 12 horas sem qualquer problema. (Code 1)
DateTime dataBase = DateTime.Now.AddHours(-48);
Code 1.
Depois de escrever o código armazenando a data em uma variável, busco todos os arquivos com extensão .ZIP. (Code 2)
string[] _files = Directory.GetFiles(ENDRECO FISICO ou DE REDE, "*.ZIP", SearchOption.AllDirectories);
Code 2
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 que encontrou, verificando o horário se é menor que 48 horas a conta da data atual. Se for, o mesmo é apagado. (Code 3)
foreach (string _file in _files)
{
FileInfo fs = new FileInfo(_file);
File.Delete(_file);
}
Code 3
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 às 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: (Code 4).
if (fs.CreationTime < dataBase)
Code 4
Para toda esta funcionalidade, é bom fazer um método responsável para fazer a busca, verificação e deleção. Segue no Code 5
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{ }
}
Code 5
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: (Code 6)
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{ }
}
Code 6
Criei outro método colocando a data menos às 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.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.