fbpx
Skip to main content

[VB.NET] Copia di una cartella

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 7 Mesi fa #11259 da COM_EASYSOCIAL_GUEST_NAME
[VB.NET] Copia di una cartella è stato creato da COM_EASYSOCIAL_GUEST_NAME
Devo fare la copia di una cartella (e di tutto il suo contenuto) da un path ad un'altro. In VB6 dichiaravo un oggetto FileSystemObject e poi utilizzavo il metodo CopyFolder, ma in VB.NET sembra che non sia più accessibile. Come posso fare allora?

Ho provato con la classe System.IO.Directory ma questa ha solo un metodo Move che non copia la cartella ma la sposta (cancellando quindi quella di origine). Inoltre tale metodo non può spostare una cartella da un'unita ad un altra, cosa a me necessaria.

Vi ringrazio per qualunque suggerimento... sperando che questo non sia che l'unica soluzione è di scrivermi da solo una funzione che effettua in modo ricorsivo la copia dei file (non ne ho voglia).

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 7 Mesi fa #11464 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [VB.NET] Copia di una cartella
Alla fine ho fatto io una routine che effettuasse la copia di una directory. La posto qui di seguito in caso qualcun'altro incontrasse lo stesso mio problema. La funzione è molto da facile da "tradurre" in linguaggio ad alto livello (specialmente Java).
    Public Function CopyDirectory(ByVal Src As String, ByVal Dest As String, Optional ByVal bQuiet As Boolean = True) As Boolean

        'Togliere i commenti se le seguenti eccezzioni non sono gestite dal metodo chiamante
        'If Not Directory.Exists(Src) Then
        'Throw New DirectoryNotFoundException("The directory " & Src & " does not exists")
        'End If
        'If Directory.Exists(Dest) AndAlso Not bQuiet Then
        'If MessageBox.Show("Directory " & Dest & " already exists." & vbCrLf & "If you continue, any files with the same name will be overwritten", "Continue?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Cancel Then Exit Function
        'End If

        If Dest.Substring(Dest.Length - 1, 1) <> Path.DirectorySeparatorChar Then
            Dest += Path.DirectorySeparatorChar
        End If
        If Src.Substring(Src.Length - 1, 1) <> Path.DirectorySeparatorChar Then
            Src += Path.DirectorySeparatorChar
        End If

        If Not Directory.Exists(Dest) Then Directory.CreateDirectory(Dest)

        Dim Files As String()
        Files = Directory.GetFileSystemEntries(Src)
        Dim element As String
        For Each element In Files
            Application.DoEvents()
            If Directory.Exists(element) Then
                'Chimata ricorsiva
                CopyDirectory(element, Dest & Path.GetFileName(element))
            Else
                'element è un File..
                File.Copy(element, Dest & Path.GetFileName(element), True)
            End If
        Next
        Application.DoEvents()
        Return True
    End Function

Spero sia utile a qualcuno. :wink:

Si prega Accedi o Crea un account a partecipare alla conversazione.