VB 2010: Как скопировать все подпапки папки в другую папку? - PullRequest
4 голосов
/ 03 апреля 2011

У меня возник вопрос в Visual Basic 2010: как скопировать все подпапки (только подпапки, а не основную папку) в другую папку?

Спасибо за помощь!

Ответы [ 3 ]

13 голосов
/ 03 апреля 2011

Вам нужно рекурсивно перебирать все файлы и папки и копировать их.Этот метод сделает всю работу за вас:

Public Sub CopyDirectory(ByVal sourcePath As String, ByVal destinationPath As String)
    Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(sourcePath)

    ' If the destination folder don't exist then create it
    If Not System.IO.Directory.Exists(destinationPath) Then
        System.IO.Directory.CreateDirectory(destinationPath)
    End If

    Dim fileSystemInfo As System.IO.FileSystemInfo
    For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos
        Dim destinationFileName As String =
            System.IO.Path.Combine(destinationPath, fileSystemInfo.Name)

        ' Now check whether its a file or a folder and take action accordingly
        If TypeOf fileSystemInfo Is System.IO.FileInfo Then
            System.IO.File.Copy(fileSystemInfo.FullName, destinationFileName, True)
        Else
            ' Recursively call the mothod to copy all the neste folders
            CopyDirectory(fileSystemInfo.FullName, destinationFileName)
        End If
    Next
End Sub
2 голосов
/ 03 апреля 2011

System.IO имеет два класса, которые вы можете использовать рекурсивно, чтобы сделать все это из кода.

  • DirectoryInfo
  • FileInfo

DirectoryInfo имеет два релевантных метода:

  • GetDirectories
  • GetFiles

FileInfo имеет метод CopyTo

Учитывая эти объекты и методыи немного творческой рекурсии, вы сможете довольно легко скопировать материал.

1 голос
/ 19 мая 2018

Это, кажется, самое простое решение:

For Each oDir In (New DirectoryInfo("C:\Source Folder")).GetDirectories()
    My.Computer.FileSystem.CopyDirectory(oDir.FullName, "D:\Destination Folder", overwrite:=True)
Next oDir
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...