ahmed seif
ahmed seif

Reputation: 1

Copying a file from a directory to another one

I have a an application which is supposed to copy a selected file whose directory is written in txtbox1 to a folder of director written in txtbox2 as follows :

code :

Dim sourcepath As String = TextBox1.Text
    Dim DestPath As String = TextBox2.Text
    CopyDirectory(sourcepath, DestPath)

Called sub:

Private Shared Sub CopyDirectory(ByVal sourcePath As String, ByVal destPath As String)
    If Not Directory.Exists(destPath) Then
        Directory.CreateDirectory(destPath)
    End If
    For Each file__1 As String In Directory.GetFiles(Path.GetDirectoryName(sourcePath))
        Dim dest As String = Path.Combine(destPath, Path.GetFileName(file__1))
        File.Copy(file__1, dest)
    Next
    For Each folder As String In Directory.GetDirectories(Path.GetDirectoryName(sourcePath))
        Dim dest As String = Path.Combine(destPath, Path.GetFileName(folder))
        CopyDirectory(folder, dest)
    Next
End Sub

This code copies all the files, not the specified one only. Can someone please tell me how to make this sub copy only the selected file not all the files in the folder?

Upvotes: 0

Views: 1437

Answers (1)

Wenadin
Wenadin

Reputation: 396

You're taking the entire path as an argument (something like this: C:/someDirectory/filename.txt) and aren't comparing the filename to the other filenames in that directory.

Instead of using:

For Each file__1 As String In Directory.GetFiles(Path.GetDirectoryName(sourcePath))
    Dim dest As String = Path.Combine(destPath, Path.GetFileName(file__1))
    File.Copy(file__1, dest)
Next

Try:

Dim sourceFileName = Path.GetFileName(sourcePath)
For Each filePath As String in Directory.GetFiles(Path.GetDirectoryName(sourcePath))
    Dim filename As String = Path.GetFileName(filePath)
    If sourceFileName = filename
    'Do your copy code here
    End If
Next

Upvotes: 1

Related Questions