응용 프로그램에 업데이트를 적용하는 데 사용할 프로그램을 작성하려고합니다. 응용 프로그램의 특성상 일부 파일은 (주로 IIS에 의해) 잠기고 File.Copy(target)
을 사용하여 덮어 쓸 수 없습니다. 작업을 수동으로 수행 할 때 지원 팀은 종종 파일을 잠금 해제하는 Windows 탐색기를 사용하여 파일을 복사하여 새 파일을 복사합니다.잠긴 파일을 이동 후 복사 덮어 쓰기
Windows 탐색기로 작업 할 때 왜 작동하며 왜 그렇게 비참하게 실패합니까? 코드에서 그것을 할 때?
var source = "c:\\source.txt";
var target = "c:\\target.txt";
var temp = "c:\\temp\\fake-target.txt";
using (var lockedFile = System.IO.File.OpenWrite(target)) {
File.Move(target, temp)
File.Copy(source, target)
}
모든 제안은 다음과 같습니다 열리고 다음 덮어 쓰기를 시도 파일을 잠그는 단위 테스트와
File.Move(target, tempPath)
File.Copy(source, target)
: 내가 사용하고 코드에 의해
는 다음과 같은 약이다 큰. 도와 줘서 고마워.
정확히 Windows 탐색기로 작업하는 것이 명확하지 않습니다. 분명히 Explorer는 또 다른 응용 프로그램이며 "미안해!"라고 말합니다. 잠긴 파일을 다른 파일처럼 이동/삭제하려고하면 오류가 발생합니다. – Jon
사실 그것은 완전히 작동합니다. 파일을 삭제하려고 시도하면 실패하지만 파일을 이동하거나 이름을 변경하려고하면 파일이 성공합니다. 파일의 이름을 바꾼 후에는 잠긴 파일이 있던 위치로 새 파일을 복사 할 수 있습니다. 파일을 잠그는 응용 프로그램이 배타적으로 파일을 잠그는 것이 아니라 복사 작업을 막는 것일 수 있습니다. – smaclell
@smaclell : 키를 누를 때까지 장치 테스트에서와 같이 파일을 잠근 다음 Explorer에서 그 파일을 처리하는 방법을 확인해보십시오. – Jon