PathCanonicalize Äquivalent in C #

8

Was entspricht PathCanonicalize in C #?

>

Verwendung: Ich muss gut raten, ob zwei Dateipfade auf dieselbe Datei verweisen (ohne Festplattenzugriff). Meine typische Herangehensweise war es, es durch ein paar Filter wie MakeAbsolute und PathCanonicalize zu werfen und dann einen Vergleich zwischen Groß- und Kleinschreibung vorzunehmen.

    
peterchen 08.03.2009, 09:44
quelle

2 Antworten

12

schnell und schmutzig:

In der Vergangenheit habe ich ein FileInfo -Objekt aus der Pfadzeichenfolge erstellt und dann die FullName-Eigenschaft verwendet. Dies entfernt alle .. und die. \ S.

Natürlich könnten Sie interop:

%Vor%     
Greg Dean 08.03.2009, 09:49
quelle
5

3 Lösungen:

Im besten Fall, wo Sie zu 100% sicher sind, dass der aufrufende Prozess vollen Zugriff auf das Dateisystem hat. CAVEAT: Berechtigung für eine Produktions-Box kann knifflig sein

%Vor%

Aber wir sind nicht immer frei. Oft müssen Sie die Zeichenfolgenarithmetik ohne Erlaubnis ausführen. Dafür gibt es einen nativen Anruf. CAVEAT: greift auf nativen Anruf zurück

%Vor%

Eine dritte Strategie besteht darin, die CLR auszutricksen. Path.GetFullPath () funktioniert problemlos auf einem fiktiven Pfad, also stellen Sie sicher, dass Sie immer einen geben. Was Sie tun können, ist, die Wurzel mit einem gefälschten UNC-Pfad auszutauschen, GetFullPath () aufzurufen und dann die echte wieder einzutauschen. CAVEAT: Dies kann einen harten Verkauf in Code-Review erfordern

%Vor%     
Paul Williams 02.02.2015 23:56
quelle

Tags und Links