Ошибка перемещения файла: процесс не может получить доступ к файлу, так как он используется другим процессом
В моем приложении VB.net,
Я хочу переместить / переименовать файл из папки 1 в папку 2. Как следующее:
System.IO.File.Move(Folder1 & "1.mp3", Folder2 & "NewName1.mp3")
И тогда я хочу переместить все оставшиеся файлы из папки 1 в папку 3
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)
Связано ли это с перемещением первого файла из папки 1 в папку 2?
Я не могу понять, откуда эта ошибка. Я проверил это локально, и это сработало. Это происходит только на сервере.
Есть ли альтернативные способы, как переместить первый файл, а затем переместить другие?
Должен ли я закрыть и удалить все файлы перед вызовом MoveFilesToBin()
? Как я могу это сделать, если я не открываю файловый поток?
Любая помощь будет оценена.
Обновление:
Я попытался пропустить часть, где я перемещаю файл из папки 1 в папку 2 и сразу вызвал MoveAllFilesToBin()
, Он работал нормально и не вернул ошибку.
Так что проблема в перемещении всех этих файлов после перемещения первого.