Relativer Pfad zu einer Datei mit C #

8

Ich habe ein Befehlszeilenprogramm, das eine Konfigurationsdatei als Parameter akzeptiert, dh C: \ myprogram.exe -c C: \ configFiles \ MyConfigFile.txt . Ich möchte in der Lage sein, es so zu machen, dass ich den absoluten Pfad zur Konfigurationsdatei nicht eingeben muss, so kann ich statt des oben genannten einfach C: \ myprogram.exe -c MyConfigFile.txt

Ich bin nicht vertraut genug damit, wie C # mit Pfaden umgeht, um zu verstehen, ob und wie dies getan werden kann. Jede Einsicht ist willkommen.

    
kingrichard2005 19.01.2011, 20:49
quelle

5 Antworten

12

Verwenden Sie Path.GetFullPath ()

Etwas wie:

%Vor%

Das ist, wenn die Konfigurationsdatei im aktuellen Verzeichnis ist. Wenn sie in einem Standardordner gespeichert sind, können Sie Path.Combine ()

%Vor%     
Nemo157 19.01.2011 20:52
quelle
4

Sie geben nur eine Zeichenfolge ein. Es liegt an dir, es in einem relativen Pfad zu handhaben.

Wenn Sie diesen Code verwenden, werden standardmäßig relative Pfade unterstützt.

FileInfo versucht zuerst, den Pfad in Environment.CurrentDirectory zu verwenden, wenn der angegebene Pfad nicht explizit ist.

%Vor%     
NerdFury 19.01.2011 20:53
quelle
2

Sie haben einige allgemeine Optionen:

  • Speichere den Verzeichnispfad in der Konfigurationsdatei (du hast gesagt, dass du das nicht willst)
  • Lassen Sie den Benutzer einen relativen Pfad eingeben (.... \ MyFile.txt)
  • Programmatisch nach Dateien suchen, die mit dem Namen übereinstimmen (sehr langsam und anfällig für die Suche nach mehreren Dateien desselben Namens)
  • Angenommen, die Datendatei befindet sich im ausführenden Verzeichnis

Wie Sie es teilen, muss der Benutzer den Pfad zum Verzeichnis angeben, sei es in der Konfigurationsdatei, den relativen Pfad eingeben oder aus einer Liste von Dateien mit identischen Namen in verschiedenen Verzeichnissen auswählen.

ANALOGY: Du legst ein Lehrbuch irgendwo in einer Schule in ein Schließfach. Sie bitten Ihren Freund, das Buch von "einem Schließfach" zu bekommen, ohne zu erwähnen, welches Schließfach das ist. Du solltest erwarten, sehr lange zu warten und am Ende mit 50 ähnlichen Büchern zu enden. Oder geben Sie einen Hinweis auf den Flur, die Bank der Schließfächer und / oder Schließfachnummer, in der das Buch gespeichert werden kann. Die Unbestimmtheit Ihres Hinweises korreliert direkt mit der Reaktionszeit und dem Potential, mehrere Möglichkeiten zurückzugeben.

    
Mike Christian 19.01.2011 22:04
quelle
0

Ohne den relativen Pfad als Teil des Eingabearguments müsste Ihre Anwendung:

  • sucht entweder nach der Datei, die in
  • übergeben wurde
  • fügen Sie den Pfadnamen des Config-Verzeichnisses an den Dateinamen
  • an
Neil Knight 19.01.2011 20:54
quelle
0

Nun, Standard-.NET-Klassen arbeiten mit relativen Pfaden auf die gleiche Weise wie mit absoluten, also könnten Sie sie ohne Probleme verwenden. Wenn C: root das Arbeitsverzeichnis Ihres Programms ist, können Sie c:\myprogram.exe -c configFiles\MyConfigFile.txt verwenden und auf c:\configFiles\MyConfigFile.txt zeigen.

    
Victor Haydin 19.01.2011 20:53
quelle

Tags und Links