Deletando todos os arquivos


por Mauricio Junior em 1/1/2011 0

        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.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Microsoft HomeOS
Append Data Bound Items
LG Optimus Black
Sistema de Catalogar Livros
101 Exemplos de Linq
Código fonte do livro DESENVOLVENDO WEBSERVICES
Sair da tela clicando ESC no Windows Forms
Vírus do Serasa por E-mail
Vídeo - Microsoft Surface: The Power
Mensagem JavaScript com .NET
Como fechar todos os forms de um aplicativo para dispositivo móvel
Multimídia C#.NET
Microsoft Preview Windows Phone 7 in NYC
Windows Phone 7 com Microsoft TellMe
Criptografia de String de Conexão no Web.Config
Criando Splash - Com Efeito
Sistema de Login em ASP – Parte V
Anime-se com o Silverlight
Conhecendo o controle Wizard ASP.NET 2.0
Trabalhando com Session
Vídeo - Sistema de Atendimento de Clientes
Servidor Integrado - Visual Studio.NET
Armazenando Dados no ViewState Parte II
Comunicação .NET e VB 6.0 – Parte I
Aplicativo iCantada Free
Public Interface
Page.Header
Orientação a Objetos com Visual Studio.NET (parte 2)
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Validator no VS 2005
Vírus - Email com viagra
Ophone The Microsoft - Vídeo
Importar projetos antigos para o Visual Studio 2010
Fotos do HTC Mozart
Visual Source Safe - Série 1