Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB7
Expertise: Intermediate
May 4, 2002

CopyDirectory - Copy a directory

' Copies a source directory to the destination directory.
' The last parameter specifies whether the files already present in the
' destination directory will be overwritten
' - Note: requires Imports System.IO
' - Usage: CopyDirectory("C:\Misc", "D:\MiscBackup")

Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, _
    Optional ByVal Overwrite As Boolean = False)
  Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
  Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)

  ' the source directory must exist, otherwise throw an exception
  If SourceDir.Exists Then
    ' if destination SubDir's parent SubDir does not exist throw an exception
    If Not DestDir.Parent.Exists Then
      Throw New DirectoryNotFoundException _
          ("Destination directory does not exist: " + DestDir.Parent.FullName)
    End If

    If Not DestDir.Exists Then
      DestDir.Create()
    End If

    ' copy all the files of the current directory
    Dim ChildFile As FileInfo
    For Each ChildFile In SourceDir.GetFiles()
      If Overwrite Then
        ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True)
      Else
        ' if Overwrite = false, copy the file only if it does not exist
        ' this is done to avoid an IOException if a file already exists
        ' this way the other files can be copied anyway...
        If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then
          ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), _
              False)
        End If
      End If
    Next

    ' copy all the sub-directories by recursively calling this same routine
    Dim SubDir As DirectoryInfo
    For Each SubDir In SourceDir.GetDirectories()
      CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName, _
          SubDir.Name), Overwrite)
    Next
  Else
    Throw New DirectoryNotFoundException("Source directory does not exist: " + _
        SourceDir.FullName)
  End If
End Sub
Marco Bellinaso
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap