일반적으로 작동하지만 사용자 사이트에서 계속 실패하는 MoveFile 메서드가 있습니다.File.Delete가 앞에 오면 File.Move가 실패합니다.
if (File.Exists(target))
{
File.Delete(target);
}
File.Move(source, target);
는 File.Move
에 대한 호출은 우리가 그 메소드에 호출을 둘러싼 오류 처리를
System.IO.IOException: Cannot create a file when that file already exists. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.__Error.WinIOError() at System.IO.File.Move(String sourceFileName, String destFileName)
반복적으로 실패하지만, 우리는 왜 작동하지 File.Delete
알아낼되지 않고 있습니다 아무것도 던지고있어.
파일 사용 권한에 대한 내용은 있지만 File.Delete
은 UnauthorizedAccessException
입니다.
File.Move
이 특정 파일을 삭제하기 전에 "파일이 이미 있습니다"와 함께 실패하게 만드는 다른 이유가 있습니까?
호기심 : 비슷한 if (File.Exists (..))에서 File.Move를 래핑하면 어떻게됩니까? – razlebe
삭제 후에 이동이 실패 할 수있는 이유 중 하나는 시스템의 일부 프로세스 (예 : 안티 바이러스 스캐너 또는 검색 인덱서)에서 파일 핸들이 여전히 열릴 수 있다는 것입니다. File.Delete 주석 섹션에서는 "Windows NT 4.0 플랫폼 참고 : 삭제는 일반 I/O 또는 메모리 매핑 된 파일을 삭제하지 않습니다."라는 메시지를 표시하므로 대신 삭제로 표시하고 추가로 호출하면됩니다. 액세스가 거부되었습니다. – kiran