2014-11-12 2 views
1

문제점 : 데스크탑 폴더 내의 폴더 (내용 포함)를 C#으로 프로그램 적으로 삭제할 수 없습니다. desktopDestinationPath 값을 복사하여 Windows 탐색기에 붙여 넣으면 이 폴더를 열 수 있습니다. (결론, 경로는 유효합니다.) 테스트 - Directory.Exists (desktopDestinationPath) - true로 반환되고 코드에 가 표시됩니다. (결론, 경로가 유효 함) 디렉토리 삭제 (desktopDestinationPath, true) - 예외를 throw (결론, 경로가 더 이상 유효하지 않음) 예외에서 경로 값을 복사하여 Windows 탐색기에 붙여 넣으면 열 수 있습니다. 이 폴더 (결론, 경로 유효)데스크탑 폴더를 삭제할 수 없습니다.

내가 시도한 것 : 빌드, 다시 작성, 솔루션 정리, 스튜디오를 다시 시작하십시오. 또한 폴더를 수동으로 삭제하고 코드를 실행하면 폴더가 성공적으로 만들어집니다. 그러나 두 번째 실행하면 예외가 발생합니다. 결과 : 당황한 표정과이 글. 죄송합니다. 너무 자세히 말하면됩니다. 나는 해결책과 비판을 돕기 위해 열었습니다 내가 게시 한 방법 (둘 다 배울 것을 도울 것입니다) 미리 감사드립니다! Visual Studio 정보가이 항목의 맨 아래쪽에 있습니다. Microsoft Visual Studio Premium 2013 (C#)을 사용 중입니다.

내 코드 :

내 코드는 다음과 같은 예외 던지고
// preceded by other code in the method 
    if (Directory.Exists(desktopDestinationPath)) // desktopDestinationPath is "C:\\Users\<me>\\Desktop\\<folder 1>\\<folder 2>" 
    { 
     Directory.Delete(desktopDestinationPath, true); // exception is thrown here <***> "C:\\Users\\<me>\\Desktop\\<folder 1>\\<folder 2>"    
     // create folder 
     Directory.CreateDirectory(desktopDestinationPath); 
     // Call a method to perform Xcopy 
     ProcessXcopy(SourceLoc, desktopDestinationPath); 
    } 
    // followed by an else which creates folder if it does not exist 

: // 참고 내가

System.IO.DirectoryNotFoundException는 사용자 코드 HRESULT = -2147024893 메시지로 처리되지 않은했다 Pri.Longpath을 사용하고를 = 경로 'C : \ Users \ ljones \ Desktop \ folder 1 \ folder2 \ fldr3 \ fldr4 \ fldr5 \ fldr6 \ fldr7 \ fldr8 \ fldr9'의 일부를 찾을 수 없습니다. System.IO.Directory.Delete (String fullPath, String userPath, Boolean recursive, Boolean checkHost)의 System.IO.Directory.DeleteHelper (System.IO.Directory.DeleteHelper)에서 Source = mscorlib입니다. UnitTests.GatMinerTest.CreateDesktopDestinationFolder (String desktopPath) at c : \ Users \ some folder \ Source \ Workspaces \ some folder \ some folder \ some folder \ some file : 93 번 줄에서 IO.Directory.Delete (문자열 경로, 부울 재귀) UnitTests.GatMinerTest.IcwIntegrationMethod() in c : \ Users \ some folder \ Source \ Workspaces \ some folder \ some folder \ some folder \ some file : 줄 65 InnerException :

웹에서 배웠습니다 : DirectoryNotFoundException 예외 은 파일 경로 또는 디렉토리의 일부가없는 경우 발생합니다. 디렉터리가 지정된 위치에 나타나는지 확인하십시오. 디렉토리가 지정된 위치에 있는지 확인하십시오. // 상당히 (99.9 %) 특정 디렉토리가 존재합니다. 상대 경로를 사용하는 경우 현재 디렉토리가 올바른지 확인하십시오. 이 잘못된 현재 디렉토리라고 가정하면 경로가 올바르지 않을 수 있습니다. // 나는 공정하다 (99.9 %) 특정 디렉토리가 존재 함

+1

질문을 다시 포맷하십시오. 코드 4 칸을 들여 쓰면 구문 강조와 코드 블록을 얻을 수 있습니다. –

+0

satic 경로를 사용하고 있습니까? – indian

+0

이전에 댓글을 본 적이 있으면 게시 한 오류 코드를 확인하지 마십시오. 이 코드를 게시 할 수 있습니까? 대부분 문자열 서식 문제가있을 가능성이 큽니다. 당신은 리터럴을 정확히 벗어나고 있습니까? 예 :''C : \\ SomeFolder \\ SomeOtherFolder ''또는'@ "C : \ SomeFolder \ SomeOtherFolder" – alykins

답변

1

답변을 찾는 데 도움을 주셔서 감사합니다. 특히,보다 적절한 방식으로 질문을 게시하는 데 대한 조언에 감사드립니다.

해결책은 내 부분에 오류가있었습니다 (그림 참조).

내가 공개하지 않은 코드에는 xcopy가 필요합니다. 나는 테스트를하는 동안 그 시점을 지나서 xcopy가 백그라운드에서 작동하고 있었다고 (여전히 내 폴더 구조에 푹 빠져 있음) 믿습니다. 따라서 삭제할 수 없습니다.

시간을 낭비한다면 사과드립니다. 당신의 뾰족 함은 제 방식으로 오류를 찾는 방향으로 나를 밀어 붙였습니다.

다시 한번 감사드립니다!

관련 문제