在vb.net中重命名和移动文件

时间:2013-03-28 20:45:23

标签: vb.net

我正在尝试将字符串“XYZ”添加到每个文件名,然后将我的文件从folderA移动到folderB。 这是我到目前为止的代码。


Private Const varSourceAddress As String = "\\serverA\drivename\FolderA\"
Dim diaddr As New DirectoryInfo(varSourceAddress)
Dim fiaddr As FileInfo() = diaddr.GetFiles()

While diaddr.GetFiles.Length > 0
  For Each scannedFile As FileInfo In fiaddr
    If scannedFile.Name.Contains("Thumbs") = False Then
      If scannedFile.Exists Then
         strOldName = scannedFile.Name
         strNewName = strOldName.Insert(14, "XYZ")
         scannedFile.CopyTo("\\serverA\drivename\FolderB\" & strNewName, True)
         scannedFile.Delete()

         strOldName = ""
         strNewName = ""

      End If
     End If
    Next
  End While

我在Windows服务中使用此代码。当服务第一次运行时,一切都按照它的设想发生。它会将XYZ添加到每个文件的名称,文件也会移动到folderB。但是,在第二次运行时,它会发送一条错误消息:

System.IO.FileNotFoundException: Could not find file '\\serverA\drivename\folderA\20130327082003.pdf'.

我可以看到文件20130327082003.pdf已经被移动到了具有新名称20130327082003XYZ.pdf的folderB,这一切都很好,但是服务一直在检查文件夹A中的相同文件名。< / p>

我已尝试重命名,移动,复制,复制所有这些命令,但系统不会检查文件夹A中的新文件(如果有),而是继续检查已移动到folderB的文件。不知何故,循环不断引用它已重命名(并已移动)的最后一个文件到folderB。

我使用.Delete方法删除文件(或任何引用),一旦将其复制到folderB,但这似乎没有任何区别。

一旦服务运行,最终它会假设将folderA中生成的每个新文件(在将XYZ添加到其名称之后)移动到folderB。

任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:0)

在另一个内部有两个循环,外部循环(while)继续,直到GetFiles()返回的文件不再存在,但在内部循环中,您使用在循环外部获得的变量fiaddr

我认为你的循环超过了必要的次数

Private Const varSourceAddress As String = "\\serverA\drivename\FolderA\"
Dim diaddr As New DirectoryInfo(varSourceAddress)
Dim fiaddr As FileInfo() = diaddr.GetFiles()

For Each scannedFile As FileInfo In fiaddr
    If scannedFile.Exists Then ' not sure it is necessary unless someone adds files externally
        If scannedFile.Name.Contains("Thumbs") = False Then
            strOldName = scannedFile.Name
            strNewName = strOldName.Insert(14, "XYZ")
            scannedFile.CopyTo("\\serverA\drivename\FolderB\" & strNewName, True)
            scannedFile.Delete()
            strOldName = ""
            strNewName = ""
        End If
    End If
 Next
相关问题