2014-10-24 2 views
0

System.IO.File.Copy이 실패합니다. 나는 그것을 수정하기 전에 대상 경로에 템플릿 파일을 복사하고 시나리오를읽기 전용 파일을 복사하는 방법은 무엇입니까? 소스 파일에 읽기 전용 속성이 설정된 경우

Access to the path <destination> is denied. (System.UnauthorizedAccessException)

, 안전을 위해 차라리 템플릿은 읽기였다 것 : I에

복사 오류가 발생합니다 만.

왜 이런 방식으로 읽기 전용 파일을 복사 할 수 없으며 가장 쉽게/현명한 방법으로 원하는 것을 얻을 수 있습니까? 그리고 ... 대상 파일을 제외하고이 파일을 만들지 않은 이유는 무엇입니까?

참고 : 복사 된 파일이 읽기 전용인지 여부를 여부를 상관 없어, 그 해결하기 위해 쉽게

+0

업데이트보기 –

+0

읽기 전용으로도 파일을 복사 할 수 있지만 파일 이동을 방해하지는 않습니다. 대상이 읽기 전용이거나 원본 파일에 대한 읽기 권한이 없습니다. –

답변

5

당신은 잘못이 진단했다. 원본은 읽기 전용이므로 파일 복사가 실패하지 않습니다. 기존 대상 파일이 읽기 전용 인 경우 파일 복사가 실패합니다. 간단한 해결 방법은 복사하기 전에 대상 파일의 읽기 전용 속성을 지우는 것입니다. 여기 SLL에서 대답은 그 작업을 수행하는 방법에 대해 설명 : How to remove a single Attribute (e.g. ReadOnly) from a File?

는 대부분의 경우 무슨 일이 일어 났는지 것입니다 :

  1. 당신은 소스로부터 목적지로 파일을 복사. 대상 경로가 원래 존재하지 않았습니다. 파일이 성공적으로 복사되었습니다.
  2. 원본 소스 파일의 읽기 전용 특성이 설정되어 있습니다. 그리고 그 속성은 대상 파일로 옮겨졌습니다.
  3. 이후 동일한 대상 경로로 복사하려고 시도하지만 해당 경로가있는 파일이 있고 읽기 전용 특성을 가지고 있으므로 작업이 실패합니다.
+0

수정. 파일을 복사 할 때 원본 타임 스탬프가 유지되어서 파일 이름이 거의 비슷하다는 것을 알지 못했기 때문에 파일을 보지 못했습니다. 그리고 파일 _modification_이 실패하여 타임 스탬프가 변경되지 않았습니다. 감사! –

2

readonly 파일을 처리하지 못하게하는 system.io.file.copy 파일은 없습니다. 문제가 대상에있는 것 같습니다. 파일이 읽기 전용이므로 readonly 특성이 복사됩니다. 다음은 실패한 readonly 속성으로 목적지를 오버라이드 (override)하려고 시도한다. 파일을 복사하기 전에 대상 위치에 파일이 있는지 확인하십시오.

Access to the path is denied. (System.UnauthorizedAccessException)

대상 폴더에 대한 액세스 권한이 없다는 의미입니다. 당신은 c : \에 대처하고 있습니까? 사용자에게 대상 폴더에 쓸 수있는 권한이 있는지 확인하십시오.