我正在做一个重命名文件夹和文件,它的概念是这样的应用程序,我有两个备份文件夹和他们有相同的内容,比方说Backup1
和Backup2
,如果我重新命名子文件夹Backup1
该子文件夹INBackup2
应重命名。我使用的是FileSystemWatcher
监视正在更名递归重命名VB.NET
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' must be a name, and not a relative or absolute path: 'Folder\SUB1'. Parameter name: newName
什么,我认为它是它被重命名在Backup2
的SUB
为Folder\SUB
这是因为watchfolder.IncludeSubdirectories = True
的监测子文件夹中存储为Folder\SUB
这是因为路径的好,为什么它有一个错误。但是,我如何正确地重命名它?以及如何递归执行,并且多个项目被重命名?
看看在Io.Path方法(https://msdn.microsoft.com/en-us/library/system.io.path%28v = vs.110%29.aspx?F = 255&MSPPError = -2147217396) – dbasnett