none
Excluir arquivos de uma pasta

    Question

  • Estou precisando urgênte de uma ajuda para deletar os arquivos da pasta Arquivos Temporarios do Windows. Minha aplicação esta sendo desenvolvida em Visual Studio 2008.

    Estou tentando esse código:

     

    If Dir("c:*.tmp") <> "" Then
    On Error Resume Next
    Kill "c:*.tmp"
    End If

     

    Mas isso ai não deleta nada. Alguém pode me ajudar preciso entregar esse trabalho até segunda.

    Pleese!!!

    Saturday, September 13, 2008 12:40 PM

Answers

  • Junior,

     

    Nesse caso, o melhor e tentar remover os arquivos e não o diretório.

     

    Neste novo exemplo se ocorrer algum erro ao tentar remover o arquivo ele "ignora" e vai para o próximo.

     

    O arquivo pode está em uso ou protegido pelo sistema e neste caso não será possível remover o arquivo pela aplicação.

    Code Snippet

     

    Try

    Dim arrStr As String() = {}

    arrStr = System.IO.Directory.GetFiles("C:\Documents and Settings\apleseed\Configurações locais\Temp", "*.*")

     

    For i As Integer = 0 To arrStr.Length - 1

    Try

    System.IO.File.Delete(arrStr(i))

    Catch ExIO As Exception

    Debug.Print(ExIO.Message)

    End Try

    Next i

     

    Catch ExIO As IOException

    MsgBox(ExIO.Message)

     

    End Try

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    Saturday, September 13, 2008 8:55 PM

All replies

  • Junir,

     

    Para apagar o diretório inteiro:

    Code Snippet
    System.IO.Directory.Delete("c:\temp",
    True)

     

     

    Para apagar apenas os arquivos de uma Extensão (por exemplo: .TXT):

     

    Code Snippet

    Try

    System.IO.Directory.GetFiles("c:\temp", "*.txt")

    Dim arrStr As String() = {}

    arrStr = System.IO.Directory.GetFiles("c:\temp", "*.txt")

     

    For i As Integer = 0 To arrStr.Length - 1

    System.IO.File.Delete(arrStr(i))

    Next

     

    Catch Ex As IOException

    MsgBox(Ex.Message)

     

    End Try

     

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    Saturday, September 13, 2008 3:29 PM
  • Obrigado Laércio,

    nesta pasta "c:\Temp" ele apagou.

    mas preciso apagar da pasta "C:\Documents and Settings\Administrador.SERVER\Configurações locais\Temporary Internet Files"

     

    Eu coloquei esse caminho mas não funcionou. Como faço?

    Saturday, September 13, 2008 8:12 PM
  • Junior,

     

    Nesse caso, o melhor e tentar remover os arquivos e não o diretório.

     

    Neste novo exemplo se ocorrer algum erro ao tentar remover o arquivo ele "ignora" e vai para o próximo.

     

    O arquivo pode está em uso ou protegido pelo sistema e neste caso não será possível remover o arquivo pela aplicação.

    Code Snippet

     

    Try

    Dim arrStr As String() = {}

    arrStr = System.IO.Directory.GetFiles("C:\Documents and Settings\apleseed\Configurações locais\Temp", "*.*")

     

    For i As Integer = 0 To arrStr.Length - 1

    Try

    System.IO.File.Delete(arrStr(i))

    Catch ExIO As Exception

    Debug.Print(ExIO.Message)

    End Try

    Next i

     

    Catch ExIO As IOException

    MsgBox(ExIO.Message)

     

    End Try

     

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

    Saturday, September 13, 2008 8:55 PM
  • Nossa... agora sim!!!! Show..

    Obrigado Laércio.

     

    Só mais uma pergunta! existe um caminho Virtual para este diretório?

    mesmo se não existir, assim já consigo entregar esse trabalho.

    Valeu!

    Saturday, September 13, 2008 9:04 PM
  • Junior,

     

    Só mais uma pergunta! existe um caminho Virtual para este diretório?

     

    Code Snippet

    Dim strPath As String = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)

     

     

    Um detalhe que ficou fora da nossa solução: Os sub-diretórios?

     

    Se se o seu caso:

    Code Snippet

    Private AllFiles As ArrayList

    Imports System.IO

     

     

     

    Code Snippet

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    AllFiles = New ArrayList()

    Dim f As FileInfo

    ListFiles(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache))

    For Each fname As String In AllFiles

    Try

    f = New FileInfo(fname)

    f.Delete()

    Catch ExIO As IOException

    Debug.Print(ExIO.Message)

    End Try

    Next

    End Sub

     

     

    Private Sub ListFiles(ByVal folder As String)

    Dim dirs As System.IO.DirectoryInfo() = New System.IO.DirectoryInfo(folder).GetDirectories()

    Dim files As System.IO.FileInfo() = New System.IO.DirectoryInfo(folder).GetFiles()

     

    For Each file As System.IO.FileInfo In files

    Me.AllFiles.Add(file.FullName)

    Next

    ' here we search files in subfolders (using recursive method)

    For Each dir As System.IO.DirectoryInfo In dirs

    ListFiles(dir.FullName)

    Next

    End Sub

     

     


    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    Saturday, September 13, 2008 9:43 PM
  • Laércio. to com uma dúvida! se eu instalar esse programa em outra maquina da empresa ele vai apagar do mesmo jeito, com esse código acima que passou do caminho Virtual.

    Por que tem a questão dos usuários, ai muda o caminho né?

    Obrigado.

    Saturday, September 13, 2008 9:50 PM
  • Junior,

     

    A solução do meu último post vai funcionar para qualquer usuário que estiver usando o Windows.

     

    Aqui é retornado o diretório do usuário corrente:

    Code Snippet

    Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)

     

     


    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.
    Saturday, September 13, 2008 9:54 PM
  • Laércio, valeu mesmo. Tudo funcionando perfeitamente. Muito obrigado! fico a disposição.

    Um Forte abraço e um bom fim de semana

    Saturday, September 13, 2008 10:52 PM