5 votes

Comment obtenir le nom de fichier relatif à un répertoire spécifique ?

J'ai une méthode qui fait une copie de fichier. Le "Root" est spécifié par l'utilisateur sur la ligne de commande, que je nettoie avec la commande Path.GetFullPath(input) .

J'ai besoin d'obtenir le chemin du fichier relatif à cette racine, de sorte que les cas suivants reviennent :

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

5voto

SLaks Points 391154

Vous pouvez écrire

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

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

2voto

James Points 918
string s1 = "y:\\";
string s2 = "y:\\temp\filename1.txt";
Console.WriteLine(s2.Substring(s1.Length)); \\ Outputs temp\filename1.txt

J'espère que cela vous aidera

Vous pouvez également appeler un .Trim() pour vous assurer de supprimer les caractères \ ou autres.

1voto

Charlie Kilian Points 3469
System.IO.Path.GetFullPath( filePath ).Substring( rootPath.Length )

1voto

SyntaxGoonoo Points 501
string relativePath = Path.GetFullPath(input).Replace(rootPath, "");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X