Скопировать подкаталоги в каталог - PullRequest
0 голосов
/ 25 августа 2011

Ссылка на этот вопрос / код:

Как скопировать папку и все подпапки и файлы в .NET?

Я пытаюсь скопировать банчиз подкаталогов в другой каталог.Я хочу обновить этот код:

Dim fso As System.Object = New System.Object
    fso = CreateObject("scripting.filesystemobject")

    fso.copyfolder(sour, dest)

Однако я получаю эту ошибку:

System.IO.DirectoryNotFoundException: Не удалось найти часть пути 'C: \ Temp \ Summer2011 \ Newfolder \ Копировать новый текстовый документ.txt '.в System.IO._E_Error.WinIOError (Int32 errorCode, String MaybeFullPath) в System.IO.File.InternalCopy (String sourceFileName, String destFileName, перезапись логического значения) в System.IO.File.Copy (String sourceFileName, String destFileName ..).etc

С этой версией .NET

 Public Overrides Sub OnClick()

            Dim sour As String = "C:\Temp243"
            Dim dest As String = "C:\Temp\Summer2011\"

            CopyDirectory(sour, dest)

    End Sub



    Private Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String)

                     If Directory.Exists(DestPath) Then
                Directory.CreateDirectory(DestPath)
            End If

            For Each File As String In Directory.GetFiles(SourcePath)
                Dim dest As String = IO.Path.Combine(DestPath, IO.Path.GetFileName(File))
                IO.File.Copy(File, dest) '<<<ERROR HERE

            Next

            For Each folder As String In Directory.GetDirectories(SourcePath)
                Dim dd As String = IO.Path.Combine(DestPath, IO.Path.GetFileName(folder))
                CopyDirectory(folder, dd)
            Next

    End Sub

Есть ли более простой способ сделать это с меньшим количеством строк кода, как в версии fso As System.Object?Кроме того, у меня импортирован System.IO, однако File.Copy и Directory.GetFiles не окрашены в синий цвет, это может быть проблемой?Система загружена в качестве справки.

Спасибо!

1 Ответ

8 голосов
/ 25 августа 2011

Попробуйте использовать метод Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory .

Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(sourceDirectory, destinationDirectory)

Надеюсь, это поможет.

...