0

私の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()。正常に動作し、エラーは返されませんでした。

問題は、最初のファイルを移動した後にこれらすべてのファイルを移動することです。

4

0 に答える 0