vb.net - 递归重命名 VB.NET

标签 vb.net recursion filesystemwatcher

我正在制作一个重命名文件夹和文件的应用程序,它的概念是这样的,我有两个备份文件夹,它们具有相同的内容,比方说Backup1Backup2,如果我重命名 Backup1 中的子文件夹,则该子文件夹 IN Backup2 应该重命名。我正在使用 FileSystemWatcher 来监视正在重命名的文件

Sub FileLogs()
    watchfolder = New System.IO.FileSystemWatcher()

    Dim src As String = Label5.Text

    watchfolder.Path = src
    watchfolder.IncludeSubdirectories = True

    watchfolder.NotifyFilter = IO.NotifyFilters.DirectoryName
    watchfolder.NotifyFilter = watchfolder.NotifyFilter Or IO.NotifyFilters.FileName

    AddHandler watchfolder.Renamed, AddressOf logrename
    'Start monitoring for renames of folders and files
    watchfolder.EnableRaisingEvents = True
End Sub

并将监控重命名的项目存储在 List(Of String)

Dim oldItemName As New List(Of String)
Dim newItemName As New List(Of String)
Private Sub logrename(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs)
    oldItemName.Add(e.OldName)
    newItemName.Add(e.Name)
End Sub

这是重命名发生的地方。

Dim dest As String = Label6.Text
    For i = 0 To Math.Min(oldItemName.Count - 1, newItemName.Count) - 1
        Try
            My.Computer.FileSystem.RenameDirectory(Path.Combine(dest, oldItemName(i)), newItemName(i))
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    Next

此代码仅在 Backup2\ 中有效,但如果我将 Backup1\Folder\SUB 中的文件夹重命名为 Backup2\Folder\SUB 中的文件夹 不能重命名。它抛出一个 ArgumentException Argument 'newName' 必须是一个名称,而不是相对或绝对路径:'Folder\SUB1'。 参数名称:newName

我认为它所做的是将 Backup2 中的 SUB 重命名为 Folder\SUB 这就是它出错的原因,因为watchfolder.IncludeSubdirectories = True 受监控的子文件夹存储为 Folder\SUB,这对路径来说很好。但是我该如何正确重命名呢?以及我如何递归执行并重命名多个项目?

最佳答案

For i = 0 To Math.Min(oldItemName.Count - 1, newItemName.Count) - 1

应该是吧

For i = 0 To Math.Min(oldItemName.Count - 1, newItemName.Count - 1)

关于vb.net - 递归重命名 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690987/

相关文章:

c# - 基于 XSD 的 .Net XML 序列化?

asp.net - 我应该开始学习经典的 VB/ASP 还是 .NET?

java - Java中的Add-Recursion,为什么最大值这么低?

c# - 如何跟踪文件和文件夹的复制/粘贴事件

c# - 将事件从 C# 应用程序传递到 Java 应用程序

vb.net - 有没有什么时候 Exception 可以什么都没有的时候?

sql-server - 如何在一个查询中更新 2 个表

java - Java程序中的递归需要重复最后一个数字

javascript - 递归函数,维护全局计数器而不使用全局变量

c# - WPF DependencyObject 调用线程异常