Как получить относительное имя файла для конкретного каталога? - PullRequest
4 голосов
/ 14 апреля 2011

У меня есть метод, который делает копию файла. «Корень» указывается пользователем в командной строке, которую я очищаю с помощью Path.GetFullPath(input).

Мне нужно получить путь к файлу относительно этого корня, поэтому вернутся следующие случаи:

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

Ответы [ 4 ]

4 голосов
/ 14 апреля 2011

Вы можете написать

var relative = new Uri(rootPath).MakeRelativeUri(new Uri(filePath));

http://msdn.microsoft.com/en-us/library/system.uri.makerelativeuri.aspx

1 голос
/ 14 апреля 2011
string s1 = "y:\\";
string s2 = "y:\\temp\filename1.txt";
Console.WriteLine(s2.Substring(s1.Length)); \\ Outputs temp\filename1.txt

Надеюсь, это поможет

Может потребоваться также вызвать .Trim (), чтобы обеспечить удаление завершающих \ символов и т. П.

1 голос
/ 14 апреля 2011
string relativePath = Path.GetFullPath(input).Replace(rootPath, "");
1 голос
/ 14 апреля 2011
System.IO.Path.GetFullPath( filePath ).Substring( rootPath.Length )
...