[VB.NET] Copia di una cartella
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- 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).
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
-
Autore della discussione
- 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).
Spero sia utile a qualcuno.
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 FunctionSpero sia utile a qualcuno.
Si prega Accedi o Crea un account a partecipare alla conversazione.