Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Cancellazione File VB.Net

    Salve a tutti, sono nuovo e non se sbaglio a postare il primo topic in questa sezione, ma avrei bisogno del vostro aiuto.
    In pratica vorrei creare un piccolo applicativo che mi cancelli i file temporanei nella cartella di windows, fin qui tutto a posto. Ho usato questo codice:

    codice:
    For Each foundFile As String In My.Computer.FileSystem.GetFiles(
        My.Computer.FileSystem.SpecialDirectories.Temp,
        Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")
    
                My.Computer.FileSystem.DeleteFile(foundFile,
                    Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs,
                    Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently)
            Next
    il problema si presenta quando arriva ad eliminare un file che è in uso da un altro processo. La mia domanda è: come faccio a fare in modo che il ciclo salti i file in uso?
    dato che attualmente con questo codice mi cancella tutti i file fino a quando non ne trova uno in uso, dopo di chè mi va in errore e si interrompe il ciclo, lasciando gli altri file (non in uso) nella cartella, senza cancellarli.

    Spero in un aiuto, grazie a tutti!

    p.s. scusate il linguaggio un po confuso ma ho scritto tutto di fretta e furia!!
    I miei piccoli progetti su
    www.disactive.com

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Metti la riga di codice che solleva l'eccezione tra un blocco Try....Catch .

    codice:
     For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.Temp, _
                                                                            Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")
                Try
                    My.Computer.FileSystem.DeleteFile(foundFile, _
                                                      Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, _
                                                      Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently)
                Catch ex As Exception
                End Try
            Next

    Sbagliare è umano, perseverare è diabolico.

  3. #3
    ti ringrazio, sei stato gentilissimo! ora va bene, cioè appena trova un file che è in uso mi esce il messaggio "riprova o annulla" mettendo annulla prosegue e va bene.. ma come potrei fare per far annullare in automatico tutti i file??
    grazie ancora!
    I miei piccoli progetti su
    www.disactive.com

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Sostituisci il DeleteFile con

    codice:
     System.IO.File.Delete(foundFile)

    Sbagliare è umano, perseverare è diabolico.

  5. #5
    ho provato ma mi da errore: system non è un membro di... ecc ecc
    I miei piccoli progetti su
    www.disactive.com

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Scusa ???
    Se prima della dichiarazione della classe Form scrivi:

    codice:
    Imports System.IO.File
    ti da errore in fase di compilazione ?
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    si si, per questo mi suona strano... ora ti posto il codice completo (con le modifiche che mi hai detto)

    codice:
    Imports System.IO.File
    
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.Temp, _
                                                                            Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")
                Try
                    My.Computer.FileSystem.System.IO.File.Delete(foundFile, _
                        Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, _
                        Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently)
                Catch ex As Exception
                End Try
            Next
        End Sub
    
    End Class
    l'errore è questo: System non è un membro di Microsoft.VisualBasic.MyServices.FileSystemProxy
    I miei piccoli progetti su
    www.disactive.com

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Guarda che io non ti suggerito quel codice ma bensi:

    codice:
     For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.Temp, _
                                                                             Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")
                Try
                    System.IO.File.Delete(foundFile)
                Catch ex As Exception
                End Try
            Next

    il che è un po diverso.
    Sbagliare è umano, perseverare è diabolico.

  9. #9
    si, hai ragione scusami

    mi sono confuso da n00b :P

    comunque ora va tutto bene, ti ringrazio infinitamente!

    vorrei chiederti solo una cosa, se hai tempo, potresti dirmi come fare (a fine processo) per far uscire un report o un messaggio che illustri quanti file ha eliminato e se possibile anche le dimensioni totali

    grazie ancora!!
    I miei piccoli progetti su
    www.disactive.com

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da Tyler88
    ...vorrei chiederti solo una cosa, se hai tempo, potresti dirmi come fare (a fine processo) per far uscire un report o un messaggio che illustri quanti file ha eliminato e se possibile anche le dimensioni totali
    grazie ancora!!
    Tutto è possibile.......

    Ovviamente dipende da come vuoi far apparira tale lista.
    Un'approccio molto semplice, semprechè tu stia lavorando nel MainThread (ovvero quello della form) potrebbe essere.

    codice:
      Dim size As Long
            Dim sizeTemp As Long
            Dim info As System.IO.FileInfo
            For Each foundFile As String In My.Computer.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.Temp, _
                                                                             Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.*")
                Try
                    info = New System.IO.FileInfo(foundFile)
                    sizeTemp = info.Length
                    System.IO.File.Delete(foundFile)
                    size += sizeTemp
                    ListBox1.Items.Add(foundFile)
                Catch ex As Exception
                Finally
                    info = Nothing
                End Try
            Next
            ListBox1.Items.Add(String.Concat("File deleted: ", CInt(size / 1024).ToString, " Kbyte"))
    Sbagliare è umano, perseverare è diabolico.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.