2011-04-13 7 views
3

나는 파일 복사를하는 방법이있다. '루트'는 사용자가 명령 줄에서 지정한 것으로, Path.GetFullPath(input)으로 위생 처리됩니다.상대 경로를 특정 디렉토리로 가져 오는 방법은 무엇입니까?

는 그 루트에 파일의 상대 경로를 얻을 필요가 있으므로 다음과 같은 경우는 반환 :

Root  FilePath     Return 
y:\   y:\temp\filename1.txt  temp\filename1.txt 
y:\dir1  y:\dir1\dir2\filename2.txt dir2\filename2.txt 

답변

1
System.IO.Path.GetFullPath(filePath).Substring(rootPath.Length) 
+0

'System.IO.Path.GetFullPath (filePath) .Substring (System.IO.Path.GetFullPath (rootPath) .Length)'나는 안전하다고 생각합니다. rootPath의 길이를 가정하기 전에 두 문자열을 모두 시스템 경로로 변환하십시오. 두 문자열에서 동일합니다. – Hutch

1
string relativePath = Path.GetFullPath(input).Replace(rootPath, ""); 
1
string s1 = "y:\\"; 
string s2 = "y:\\temp\filename1.txt"; 
Console.WriteLine(s2.Substring(s1.Length)); \\ Outputs temp\filename1.txt 

희망이 있습니다.

.Trim()을 호출하여 후행 문자를 제거 할 수 있습니다.

+0

당신은'.TrimEnd'를 의미합니다 – SLaks

+0

Nah는 프로토 타입과 모든 것을 가진 실제 메소드에 대해 http://msdn.microsoft.com/en-us/library/d4tt83f9.aspx를 의미했습니다. 그러나 만약 당신이 그것을 원한다면 한쪽은 TrimStart가 될 것입니다 ... 파일 이름에는 \가 있지만 하위 서브 폴더 경로의 경로 시작 부분에있을 수 있습니다. – James

관련 문제