5 Stimmen

Wie erhält man den relativen Dateinamen zu einem bestimmten Verzeichnis?

Ich habe eine Methode, die eine Dateikopie durchführt. Die 'Root' wird vom Benutzer in der Befehlszeile angegeben, die ich mit der folgenden Methode bereinige Path.GetFullPath(input) .

Ich muss den Pfad der Datei relativ zu diesem Root abrufen, so dass die folgenden Fälle zurückgegeben werden würden:

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

5voto

SLaks Punkte 832502

Sie können schreiben

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

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

2voto

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

Ich hoffe, das hilft

Möglicherweise sollten Sie auch eine Trim()-Funktion aufrufen, um sicherzustellen, dass nachstehende \-Zeichen o.ä. entfernt werden.

1voto

Katie Kilian Punkte 6521
System.IO.Path.GetFullPath( filePath ).Substring( rootPath.Length )

1voto

SyntaxGoonoo Punkte 880
string relativePath = Path.GetFullPath(input).Replace(rootPath, "");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X