将修改后的文件列表从多个源目录复制到等效的目标目录

时间:2016-03-30 11:53:23

标签: vb.net

我正在学习VB.NET并编写一个实用程序,只将修改后的文件从预设的文件夹选择复制到备份目录中的等效文件。

例如:D:\ Profiles \ Mail to E:\ Backup \ Profiles \ Mail

我已经可以使用以下内容完成复制:

For Each item In MAILp
        My.Computer.FileSystem.CopyDirectory(MAILp, MAILd, True)
    Next

但是这个想法是计算要复制的修改文件的数量,并通过进度条和后台工作者(最终)显示这一点

目前我正在与此合作;

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'Contants for whole activity
    Dim lstFiles As New List(Of FileInfo)
    Dim fsInfo As FileSystemInfo

    'Constants for dirInfo's
    Dim dirInfoMAILp As New DirectoryInfo(MAILp)
    Dim dirInfoDESKTOPp As New DirectoryInfo(DESKTOPp)

    'Loop for Mail
    For Each fsInfo In dirInfoMAILp.GetFileSystemInfos

        Dim strDestFileName As String = Path.Combine(MAILd, fsInfo.Name)
        Dim destFileInfo As New FileInfo(strDestFileName)

        If fsInfo.LastWriteTime > destFileInfo.LastWriteTime Then

            lstFiles.Add(fsInfo)

        End If
    Next

    'Loop for Desktop
    For Each fsInfo In dirInfoDESKTOPp.GetFileSystemInfos

        Dim strDestFileName As String = Path.Combine(DESKTOPd, fsInfo.Name)
        Dim destFileInfo As New FileInfo(strDestFileName)

        If fsInfo.LastWriteTime > destFileInfo.LastWriteTime Then

            lstFiles.Add(fsInfo)

        End If
    Next

    'Number of files to copy
    Label1.Text = lstFiles.Count

 For Each file As FileInfo In lstFiles
        System.IO.File.Copy(file.FullName, DESTINATIONMAIN + file.Name, True)
    Next

End Sub

我的问题分为三部分:

1。如果目标中尚不存在文件,则会抛出异常。如果第一次使用该实用程序,这并不好。如果在目标中不存在文件,如何在循环中使用ELSE来复制文件?

2. 副本不会复制文件夹,只复制文件,我可以将其展开以包含文件夹吗?理想情况下,差异检查循环以Top文件夹为目标,然后遍历每个子文件夹和文件,并将其添加到列表中。

3. 当复制到目标文件夹时,文件将被复制到目标顶层文件夹" E:\ Backup \ Profiles",而不是在子文件夹中被复制了。

有人能指出我正确的方向吗?

0 个答案:

没有答案