2017-04-10 4 views
1

이것은 조금 까다 롭습니다. 그리고 C#이 Directory.Move 함수에 내장 된 방법에 대한 통찰력을 얻을 수 있기를 바랍니다. 특정 날짜보다 오래된 폴더 이름 목록을 DirectoryInfo 목록에 넣는 프로그램을 작성했습니다. DirectoryInfo 목록은 다른 곳으로 폴더 이동을 반복합니다. temp.Fullname는 T 같은 것입니다C# Directory.Move 액세스 거부 오류

   foreach (DirectoryInfo temp in toBeDeleted) 
      { 
       filecheck.WriteLine(temp.Name); 

       Directory.Move(temp.FullName, @"T:\Transactiondeletions\" + counter + "\\" + temp.Name); 
      } 

: 나는이 프로그램을 실행하면 \ UK \ DATA는 \ 386 \ 트랜스 12345678.16

\ 그러나 나는 액세스 거부 오류를했다. enter image description here

T :이 경우 뭔가처럼 나는 다른 매핑 된 드라이브 10.11.12.13 \ 데이터 3의 $와 같은 IP에 있고 동일한 디렉토리 구조를 가지고, U :를 가지고 $ 10.11.12.13 \ 데이터 2 .

키커는 내 프로그램이 U 드라이브에서는 정상적으로 작동하지만 T 드라이브에서는 정상적으로 작동하지 않는다는 것입니다. 내 코드에서 드라이브 문자를 IP로 실제 전체 경로로 시도했지만 여전히 U 드라이브에서는 제대로 작동하지만 T 드라이브에서는 제대로 작동하지 않습니다.

T 드라이브에서 내 프로그램이 폴더를 이동하려고 할 때마다 액세스 거부가 발생합니다.

  1. 내가 손
  2. 수동으로 폴더를 이동 내가 + Directory.Delete 대신

어떤 아이디어 Directory.Move의 디렉토리 사본을 사용하는 경우

그러나 그것을 잘 작동? 내가 수동으로 파일을 이동할 수 있지만 여기에서 작동하지 않을 이유를 알아낼 수 없다. 나는 .exe를 수동으로 그리고 관리자 및 동료로서 실행하려고 시도했지만 그 결과는 동일합니다.

나는 streamwriter가 열린 상태 (파일 검사) 일 수 있다고 생각했지만 스트림 우르단을 닫을 때까지 이미이 코드 부분을 옮겨 보았지만 같은 오류가 발생했습니다. 그 가능성을 배제했다.

모든 조언을 주시면 감사하겠습니다. 필요한 경우 더 많은 정보를 제공해 드리겠습니다.

+0

은 수동으로 이동할 때 실행중인 코드와 동일한 코드입니까? – dlatikay

+0

원래 질문을 편집하여 여기에 의견을 추가하는 방법을 알 수 없습니다. 나는 streamwriter가 열린 상태 (filecheck)와 관련되었을 수도 있다고 생각했지만, 나는 streamwriter를 닫을 때까지 이미이 코드 부분을 움직이려고 시도했지만 동일한 오류가 발생하여 그 가능성을 배제했다. –

+0

'C#, permissions, directory, move' 태그 아래의'edit' 버튼을 클릭하기 만하면됩니다. – Equalsk

답변

1

여전히 Directory.Move 작업이 작동하지 않는 솔루션이 없습니다. 그러나 나는 디렉토리로 가서 File.Move를 사용하여 다른 곳에있는 모든 파일을 이동 한 다음 Directory.Delete를 사용하여 원래 디렉토리를 삭제함으로써이 문제를 해결할 수있었습니다. 어떤 이유로 그것은 이처럼 작동합니다. 그러나 그것은 할 것이다!