How to copy a file from one directory to another directory by creating the folder if that folder does not exist
The following is not a directory.
Dim sourcepath As String = "C:\temp\test\1.txt"
Because you are using it as a directory in Directory.GetFiles(sourcePath)
.
Apart from that, I recommend to elaborate your questions more the next time. The code raises meaningful exceptions like DirectoryNotFoundException
with the appropriate path as message or (if the file exists) an IOException
with message "The directory name is invalid". You should have added that to the question.
So the solution simply is to remove the 1.txt
from the directory-name:
Dim sourcepath As String = "C:\temp\test\"
If you need to copy only one file, use CopyTo method:
Dim sourcepath As String = "C:\temp\test\"
Dim DestPath As String = "C:\temp\Data\"
If Not Directory.Exists(DestPath) Then
Directory.CreateDirectory(DestPath)
End If
Dim file = New FileInfo("C:\temp\test\1.txt")
file.CopyTo(Path.Combine(DestPath, file.Name), True)
user1101157
Updated on April 29, 2020Comments
-
user1101157 about 4 years
I have some problem with copying the file from one directory to another directory by creating the folder if that folder does not exist in the destination directory.
Example:
- Source path:
C:\temp\test\1.txt
- Destination path:
C:\Data\
If
C:\Data\
doesn't contain "temp" or "test" folder, it should create the folder before coping1.txt
.Copied to
C:\Data\temp\test\1.txt
Below is my code. But it doesn't work..
Private Sub btnBackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackup.Click Dim sourcepath As String = "C:\temp\test\1.txt" Dim DestPath As String = "C:\Data\" CopyDirectory(sourcepath, DestPath) End Sub Private Shared Sub CopyDirectory(sourcePath As String, destPath As String) If Not Directory.Exists(destPath) Then Directory.CreateDirectory(destPath) End If For Each file__1 As String In Directory.GetFiles(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(sourcePath) Dim dest As String = Path.Combine(destPath, Path.GetFileName(folder)) CopyDirectory(folder, dest) Next End Sub
- Source path:
-
user1101157 about 12 yearsI have a lot of text file but I want to copy 1.txt file only.
-
Tim Schmelter about 12 years@user1101157: Updated my answer.
-
Aurasphere about 8 yearsWelcome to StackOverflow! Please consider adding a little explanation to your code. Thank you!