fbpx
  1. luffa
  2. S.O.S. Computer
  3. Venerdì, 15 Aprile 2005
  4.  Subscribe via email
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).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
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).

[code type="markup"]
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
[/code]

Spero sia utile a qualcuno. :wink:
Comment
There are no comments made yet.
  1. more than a month ago
  2. S.O.S. Computer
  3. # 1
  • Page :
  • 1


There are no replies made for this post yet.
Be one of the first to reply to this post!