Copying all files in a directory to another directory


I'd like to know how to copy all files (*.*) in directory DirSource to a directory DirTarget.

I tried hard with Directory.GetFiles(DirSource).CopyTo ... but coudn't do it.

This is a beginner's question, sorry.

Any help shall be welcome.
Who is Participating?
bramsquadConnect With a Mentor Commented:
   Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim DirSource As String = "D:\"
        Dim DirTarget As String = "F:\"

        Dim dir As New System.IO.DirectoryInfo(DirSource)
        Dim file As System.IO.FileInfo

        For Each file In dir.GetFiles
            file.CopyTo(DirTarget + file.Name)
    End Sub
Note that Directory.GetFiles(DirSource) returns an array of strings containing the names of files in the specified directory.  (  At this point, it's just an array of strings....

Perhaps something like:

    astrFileNames = Directory.GetFiles(DirSource)
    For i = 0 to astrFileNames.Length
        File.Copy(strOldDirectoryPath & astrFileNames(i), strNewDirectoryPath & astrFileNames(i))

Assuming that strOldDirectoryPath and strNewDirectoryPath end in a backslash.  If not, then

        File.Copy(strOldDirectoryPath & "\" & astrFileNames(i), strNewDirectoryPath & "\" & astrFileNames(i))

might work better.
Try this

    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
            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(System.IO.Path.Combine(DestDir.FullName, ChildFile.Name), True)
                    ' 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(System.IO.Path.Combine(DestDir.FullName, ChildFile.Name)) Then
                        ChildFile.CopyTo(System.IO.Path.Combine(DestDir.FullName, ChildFile.Name), False)
                    End If
                End If

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

GhanisenAuthor Commented:

Thogek and heintalus have provided valuable input but bramsquad's solution is the quickest and more robust. Therefore bramsquad gets the 500 points.

Thanks to all three for helping out.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.