可以批量移入多个文件

时间:2019-01-28 17:57:42

标签: vb.net file move

我想将多个文件从一个目录移动到另一个目录。我使用“ My.Computer.FileSystem.MoveFile”,效果很好,但一次只能处理一个文件。因此,对于该目录中每个已经存在的文件,我都会收到一个警告(即“文件已存在”),而不是该批次的一个警告。是否有可能对所有移动的文件发出一个警告?

       For i = .Items.Count - 1 To 0 Step -1

                Dim map = .Items.Item(i).SubItems(COL_MAP).Text
                Dim bestandHernoemd = .Items.Item(i).SubItems(COL_HERNOEMD).Text
                Dim bestandOrigineel = .Items.Item(i).SubItems(COL_ORIGINEEL).Text

                    Try

                        My.Computer.FileSystem.MoveFile(map & bestandOrigineel, My.Settings.OPTIE_OvernemenStandaardMapNaam & bestandHernoemd, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.ThrowException)

                        .Items.RemoveAt(i)                               

                    Catch ex As Exception

                        foutLijst.Add(bestandOrigineel & ": " & ex.Message)

                    End Try
        Next

1 个答案:

答案 0 :(得分:1)

如果要递归地将文件(所有文件夹,子文件夹,文件或子文件)从一个源复制到目标,可以使用以下子过程。没有应用警告,它将覆盖目标。

Public Sub CopyDirectory(ByVal sourcePath As String, ByVal destinationPath As String)
   Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(sourcePath)
        'If the destination folder doesn't exist then create it'
      If Not System.IO.Directory.Exists(destinationPath) Then
            'Obs, folder doesn't exist, create one please :)'
         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 method to copy all the nested folders
              CopyDirectory(fileSystemInfo.FullName, destinationFileName)
            End If
       Next
End Sub