Wie man einen Pfad von einem Verzeichnis in ein C# - Konsolenanwendung?
Sagen, dass ich diese Datei Struktur
Soultion nutzen-> Folder1 -> FileIwant.html
So, das könnte etwas wie C:\Soultion\Folder1\FilterIwant.html
Nun muss ich Lesen Sie diese Datei in meine Anwendung. Ich kann nicht einfach hardcode es da, wenn ich es an jemand anderen geben, Sie könnten es auf Laufwerk F: oder so.
Oder wenn ich erstellen Sie eine msi-Datei der Pfad kann völlig unterschiedlich sein. Also, wie kann ich sagen, vielleicht nehmen
"Folder1\FilterIwant.html"
und verwenden, um den Ordner-Pfad, unabhängig davon, wo Sie es sagen?
Bearbeiten
Versuchte ich Weg.GetFullPath aber ich landen im bin/debug-Verzeichnis. Aber meine Datei nicht in diesem Verzeichnis. Ich denke, es ist ein paar Verzeichnisse vor. Auch wenn ich eine msi-Datei habe ich in bin/debug-Verzeichnis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum wird eine Datei die als Teil der Anwendung nicht in den gleichen Ordner wie die Anwendung? Es klingt für mich wie Sie sollten, setzen Sie die Eigenschaften auf, die Datei zu kopieren um die Ausgabe-Ordner, wenn Sie eine bauen.
Tun, stellen Sie sicher, Ihre Datei ist im bin\debug-Ordner.
BEARBEITEN:
entweder das, oder Sie sollten platzieren Sie Ihre Dateien in einem der Ordner mit Sonderfunktionen, app-Daten oder meine Dokumente in den Sinn.
Wenn Visual Studio kompiliert dein Projekt wird es sein, die Ausgabe in die
bin\debug
- Verzeichnis. Alle Inhalte, Dateien, die Sie verweisen möchten, müssen Sie auch kopiert werden, um diejenigen Orte, um für Ihre app, die Ihren Wohnsitz in das Verzeichnis Lesen zu können, die Datei.Haben Sie zwei Möglichkeiten:
Copy to Output Directory
Grundstück, auf IhreFilterIwant.html
zuCopy if newer
; in diesem Fall, wenn die Datei geändert wurde, wird es in das Ausgabeverzeichnis kopiert werden, und Sie sollten in der Lage sein, um die Referenz-es und laden Sie es dortoder
app.config
so etwas wieDataPath
, und legen Sie es auf Ihrem Ordner, wo sich die Datei befindet. Aus Ihrer app erstellen Sie dann den vollständigen Pfadnamen für die DateiPath.Combine(AppSettings["DataPath"], "FilterIwant.html")
- mit diesem Ansatz, werden Sie völlig unabhängig davon, wo die Datei wirklich liegt, und Sie brauchen nicht zu bewegen, nichts. Auch: dies gibt Ihnen die Möglichkeit zum erstellen eines admin/config Dienstprogramm für die Benutzer später auf, so dass Sie können wählen Sie ein beliebiges Verzeichnis Sie wollen, und Ihre app finden, diese Dateien gibt es.In meiner console app, angefangen habe ich mit dem debug-Verzeichnis sein, bis ich den nächsten übergeordneten Ordner, den ich wollte.
Brauchen Sie die Hilfe von System.Io.Pfad Klasse:
Bearbeiten:
Müssen Sie möglicherweise auch das Verzeichnis der Anwendung - dies ist, wo Ihre Anwendung installiert werden soll:
Weg.GetFullPath
Bearbeiten
Den bin/Debug Pfad nicht vorhanden sein, wenn Sie führen Sie die installierte Anwendung (es sei denn, Sie sagen, die speziell für den installer verwenden Sie das Unterverzeichnis, natürlich).
Werden Sie wahrscheinlich wollen, übergeben Sie den vollständigen Pfad als command-line argument. Sie können dann das argument mit der
args
parameter derMain
Methode. Konvertieren Sie einen relativen Pfad in einen absoluten können SiePath.GetFullPath
:}