2012-04-12 4 views
1

응용 프로그램 업데이트를 수행하기 위해 잠긴 .dll 파일 (File.Move)을 이동하려고합니다. File.Move 메서드가 예외없이 실행되었습니다. 그러나 파일은 이동되지 않았습니다. 내 말은 File.Move 메서드를 실행 한 후에 대상 폴더와 원본 폴더에 같은 파일의 두 복사본이 있다는 뜻입니다. 코드는 다음과 같습니다.잠긴 파일 이동

File.Move(fileName, newFileName); 

누군가이 이유를 설명 할 수 있습니까? 파일이

첫 번째 성공하고 두 번째는 자동으로 실패 것처럼 것 같다 삭제

  1. 파일을 복사
  2. : 볼륨에

+1

무엇이 질문입니까? – Nick

+0

파일을 사용중인 경우 삭제할 수 없습니다 (OS가이를 방지 함) ... 다른 동작을 기대합니까? – Marco

+0

수정 됨. OS는 잠긴 파일을 옮길 수 있습니다. –

답변

7

File.Move 순서에서이 작업을 수행합니다. 예상대로 결과. 여기에서

참고 : http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx

당신은 디스크 볼륨에서 파일을 이동하려고하고 해당 파일이 사용중인 경우, 파일이 대상에 복사하지만 소스에서 삭제되지 않습니다.

+0

몇 가지 답변이 있습니다 : File.Move는 파일을 여러 볼륨으로 이동할 때만 복사 및 삭제를 수행합니다. Else File.Move는 파일 메타 데이터를 업데이트합니다 (잠긴 파일을 이동할 수 있기 때문에). –

+0

음이 볼륨간에 이동됩니까? 그것 모두를 설명 할 수 있습니다. – yamen

0

일반적으로이 경우 업데이트 프로그램을 생성하여 좋아하는 것을 옮기고 업데이트를 수행하고 응용 프로그램을 다시 시작할 수 있도록 응용 프로그램 DLL을 필요로하지 않는 별도의 업데이트 프로세스가 있습니다.

또는 설치 프로그램에서 다음 재부팅시 발생 된 파일 변경 사항을 제출하십시오.

0

File.Move 메서드는 먼저 fileName 파일을 'newFileName'파일로 복사합니다. 첫 번째 단계가 완료되면 'fileName'파일이 삭제됩니다.

이제 'fileName'파일이 열려 있거나 잠겨 있으면 파일을 삭제할 수 없습니다.