移动文件导致错误他进程无法访问该文件,因为它正由另一个进程使用

时间:2015-05-05 07:25:56

标签: vb.net system.io.fileinfo system.io.file

在我的VB.net应用中,

我想将文件从 folder1 移动/重命名为 folder2 。如下所示:

   System.IO.File.Move(Folder1 & "1.mp3", Folder2 & "NewName1.mp3")

然后我想将 folder1 中的所有剩余文件移至 folder3

   Sub MoveAllFilesToBin()
    Try
        Dim FolderName As New IO.DirectoryInfo(Folder1)
        Dim diar1 As IO.FileInfo() = FolderName.GetFiles()
        For Each CurrFile In diar1
            If System.IO.File.Exists(Folder3 & CurrFile.Name) Then
                System.IO.File.Delete(Folder3 & CurrFile.Name)
            End If
            System.IO.File.Move(Folder1 & CurrFile.Name, Folder3 & CurrFile.Name)


       Next

    Catch ex As Exception

    End Try

End Sub

循环使用此功能。我收到以下错误:

 The process cannot access the file because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.__Error.WinIOError()
   at System.IO.File.Move(String sourceFileName, String destFileName)

是否与将第一个文件从 folder1 移动到 folder2 有关?

我无法弄清楚这个错误来自哪里。我在本地进行了测试并且有效。它只发生在服务器上。

有关如何移动第一个文件然后移动其他文件的任何其他方法吗?

我应该在致电MoveFilesToBin()之前关闭并处理所有文件吗?如果我没有打开文件流,我怎么能这样做?

任何帮助都将不胜感激。

更新

我尝试跳过将文件从 folder1 移动到 folder2 并直接调用MoveAllFilesToBin()的部分。它工作正常,没有错误。

所以问题是移动第一个文件后移动所有这些文件。

0 个答案:

没有答案