Streamreader zu einem relativen Dateipfad

7

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.

    
gfppaste 16.05.2012, 17:31
quelle

4 Antworten

10

Befindet sich der Ordner "TestDir" immer im ausführbaren Verzeichnis? Falls ja, probiere das aus.

%Vor%

Dies gibt Ihnen den Pfad der exe plus den Ordner darin und die Textdatei

    
hjgraca 16.05.2012, 17:43
quelle
7

Sie können die Methode GetFullPath() verwenden. Versuchen Sie Folgendes:

%Vor%     
RajN 16.05.2012 17:37
quelle
4

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");

    
SPFiredrake 16.05.2012 17:44
quelle
2

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.

    
Tester101 16.05.2012 17:42
quelle

Tags und Links