다른 이름으로 같은 이름으로 디렉토리를 바꾸는 것입니다
문제
C#의 디렉토리를 다른 경우와 동일 한 이름으로 바꾸려고합니다.
예를 들면 : f : t to f : test to Test
이 코드를 시도했습니다.
var directory = new DirectoryInfo("f:\\test");
directory.MoveTo("f:\\TEST");
그리고 ioexception을 얻습니다. 소스와 대상 경로는 달라야합니다. 또한 동일한 결과를 가진 directory.move ()를 시도했습니다.
이게 어떻게 끝났어? 별도의 온도 디렉토리를 만들고, 포함 된 파일을 원본 디렉토리에서 온도 디렉토리로 이동 한 다음 원본을 삭제 한 다음 Temp 디렉토리의 이름을 바꿔야합니까?
해결책
글쎄, 당신은 별도의 디렉토리를 만들고 모든 것을 움직일 필요가 없습니다. 폴더의 이름을 다른 것으로 바꾸고 원하는 이름으로 돌아갑니다.
var dir = new DirectoryInfo(@"F:\test");
dir.MoveTo(@"F:\test2");
dir.MoveTo(@"F:\TEST");
다른 팁
디렉토리의 이름을 바꾸십시오 temp
그런 다음 다시 이름을 바꿉니다 TEST
?
.NET 메소드라도 DirectoryInfo.MoveTo
이름이 동일하다면 예외를 던지면 Windows API를 호출 할 수 있습니다. MoveFile
디렉토리 이름의 케이싱을 설정하기 위해 이와 같은 기능 :
bool success = MoveFile(dirInfo.FullName, dirInfo.FullName);
이 외부 선언으로 :
[DllImport("kernel32", SetLastError = true)]
private static extern bool MoveFile(string lpExistingFileName, string lpNewFileName);
이름이 경우에만 다른 경우에만 잘 작동합니다. 이름이 이미 지정된대로 이름이 정확히 이런 식으로 부르려고 시도하지 않았습니다.
이것은 디렉토리가 원래 이름으로 결코 사라지지 않는다는 이점이 있습니다.
Windows에서만 작동한다는 단점이 있습니다.
이 경우 대답은 예입니다. 파일 시스템 자체는 두 가지가 다르지 않으므로 삭제하고 새 이름으로 추가해야합니다 (또는 제안한대로 이동/삭제/이동).