我正在学习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",而不是在子文件夹中被复制了。
有人能指出我正确的方向吗?