如果该文件夹不存在,如何通过创建文件夹将文件从一个目录复制到另一个目录

use*_*157 6 .net vb.net directory copy file

如果目标目录中不存在该文件夹,则通过创建文件夹将文件从一个目录复制到另一个目录时出现问题.

例:

  • 来源路径: C:\temp\test\1.txt
  • 目的地路径: C:\Data\

如果C:\Data\不包含"temp"或"test"文件夹,则应在复制前创建文件夹1.txt.

复制到 C:\Data\temp\test\1.txt

以下是我的代码.但它不起作用..

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
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 9

以下不是目录.

Dim sourcepath As String = "C:\temp\test\1.txt"
Run Code Online (Sandbox Code Playgroud)

因为您将其用作目录Directory.GetFiles(sourcePath).

除此之外,我建议您下次再详细说明您的问题.代码引发了有意义的异常,例如DirectoryNotFoundException使用适当的路径作为消息或(如果文件存在)IOException带有消息"目录名称无效".你应该把这个添加到问题中.

所以解决方案就是1.txt从目录名中删除:

Dim sourcepath As String = "C:\temp\test\"
Run Code Online (Sandbox Code Playgroud)

如果只需要复制一个文件,请使用CopyTo方法:

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)
Run Code Online (Sandbox Code Playgroud)