문제

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에서만 작동한다는 단점이 있습니다.

이 경우 대답은 예입니다. 파일 시스템 자체는 두 가지가 다르지 않으므로 삭제하고 새 이름으로 추가해야합니다 (또는 제안한대로 이동/삭제/이동).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top