Ich habe mich gefragt, ob jemand mir sagen könnte, wie man einen StreamReader auf eine Datei im aktuellen Arbeitsverzeichnis des Programms richtet.
E.G. Angenommen, ich habe das Programm Prog im Verzeichnis C: \ ProgDir gespeichert. Ich übertrage \ ProgDir in einen freigegebenen Ordner. Inside ProgDir ist ein weiteres Verzeichnis, das Dateien enthält, die ich in Prog importieren möchte (zB \ ProgDir \ TestDir \ TestFile.txt) Ich möchte es so machen, dass der StreamReader diese TestFiles lesen kann, selbst wenn der Pfad zu dem Verzeichnis hat geändert;
(z. B. auf meinem Computer ist der Pfad zu den Testdateien
C: \ ProgDir \ TestDir \ TestFile.txt
aber auf dem Computer der anderen Person ist das Verzeichnis
C: \ dev_code \ ProgDir \ TestDir \ TestFile.txt
).
Wie würde ich einen StreamReader erhalten, um aus TestFile.txt auf dem Computer der anderen Person zu lesen? (Zur Verdeutlichung, die Dateinamen ändern sich nicht, die einzige Änderung ist der Pfad ProgDir)
Ich habe Folgendes versucht:
%Vor%(gezogen von: Pfad wird abgerufen relativ zum aktuellen Arbeitsverzeichnis? )
Aber ich bekomme "TestFile existiert nicht im aktuellen Kontext". Hat jemand eine Idee, wie ich das angehen soll?
Danke.
Ein paar Dinge:
Zunächst gibt FileInfo.FullName
den absoluten Pfad für die Datei an, sodass Sie nicht den vollständigen Verzeichnispfad vor der Datei in der StreamReader-Instanz voranstellen müssen.
Zweitens sollte FileInfo file = new FileInfo(TestFile.txt);
fehlschlagen, es sei denn, Sie haben tatsächlich eine Klasse namens TestFile
mit einer Eigenschaft txt
.
Schließlich verwenden sie fast jede File
Methode bereits relative Pfade. Also sollten Sie in der Lage sein, den Stream-Reader nur auf den relativen Pfad zu verwenden.
Geben Sie diese paar Dinge einen Versuch und lassen Sie es uns wissen.
Bearbeiten: Hier ist, was Sie versuchen sollten:
%Vor% Eines ist mir jedoch aufgefallen: Das TestFile befindet sich in TestDir
. Wenn sich Ihre ausführbare Datei in ProgDir
befindet, wie Sie sagen, wird dies immer noch fehlschlagen, weil Ihr relativer Pfad nicht stimmt.
Versuchen Sie stattdessen, es in TestDir\TestFile.txt
zu ändern. IE: StreamReader sr = new StreamReader("TestDir\TestFile.txt");
Die Dateiinfo constructor nimmt einen einzelnen Parameter vom Typ string. Versuchen Sie, TestFile.txt in Anführungszeichen zu setzen.
Ändern
FileInfo file = new FileInfo(TestFile.txt);
bis
FileInfo file = new FileInfo("TestFile.txt");
Außer TestFile ist ein Objekt mit einer Eigenschaft namens txt
vom Typ string. In diesem Fall müssen Sie das Objekt erstellen, bevor Sie versuchen, es zu verwenden.
Tags und Links .net c# filestream