Streamreader ein relativer Dateipfad
Ich Frage mich, wenn jemand könnte mir sagen, wie-zu-Punkt einen StreamReader, um eine Datei im aktuellen Arbeitsverzeichnis des Programms.
E. g.: sagen, ich habe das Programm Prog in dem Verzeichnis gespeichert "C:\ProgDir\". Ich verpflichte "\ProgDir" auf einen freigegebenen Ordner. Innerhalb ProgDir ist ein weiteres Verzeichnis mit Dateien, die ich importieren möchten in Prog (z.B. "\ProgDir\TestDir\TestFile.txt") ich möchte es so machen, dass der StreamReader Lesen konnte solche TestFiles, auch wenn der Pfad zu dem Verzeichnis hat sich geändert;
(E. G., auf meinem computer, den Pfad zu den Testfiles ist
C:\ProgDir\TestDir\TestFile.txt
aber auf die andere person die computer, das Verzeichnis ist
C:\dev_code\ProgDir\TestDir\TestFile.txt
).
Wie kann ich einen StreamReader zu sein ale zu Lesen TestFile.txt auf dem computer des anderen Benutzers? (zu klären, werden die Dateinamen nicht ändern, die einzige änderung ist der Pfad ProgDir)
Ich habe versucht, die folgenden:
string currentDir = Environment.CurrentDirectory;
DirectoryInfo directory = new DirectoryInfo(currentDir);
FileInfo file = new FileInfo("TestFile.txt");
string fullDirectory = directory.FullName;
string fullFile = file.FullName;
StreamReader sr = new StreamReader(@fullDirectory + fullFile);
( gezogen aus : Bekommen Pfad relativ zum aktuellen Arbeitsverzeichnis?)
Aber ich bin immer "TestFile existiert nicht im aktuellen Kontext". Jemand eine Idee, wie ich diesen Ansatz?
Danke.
- Ihre Titel sieht völlig unabhängig von deiner Frage... wo kommt die Stoppuhr ins Spiel?
- Tut mir Leid, dass, ich denke, der Titel über die aus meiner letzten Frage irgendwie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist der Ordner "TestDir" immer in die ausführbare Datei ein Verzeichnis?
wenn ja, versuchen Sie diese
Dies wird geben Sie den Pfad der exe-plus den Ordner hinein und die Textdatei
Können Sie die
GetFullPath()
Methode. Versuchen Sie dies:Ein paar Dinge:
Zunächst
FileInfo.FullName
gibt den absoluten Pfad für die Datei, so dass Sie nicht brauchen, um voran den kompletten Pfad, bevor die Datei in die StreamReader-Instanz.Zweiten
FileInfo file = new FileInfo(TestFile.txt);
ausfallen sollte, es sei denn, Sie haben tatsächlich eine Klasse namensTestFile
mit einemtxt
Eigenschaft.Endlich, mit fast jedem
File
Methode, Sie relative Pfade verwenden, schon. So SOLLTEN Sie in der Lage, verwenden Sie die stream-reader auf NUR der relative Pfad.Geben, einige Dinge zu versuchen und lassen Sie es uns wissen.
Edit: Hier ist was Sie sollten versuchen:
Jedoch eine Sache, die ich bemerkt ist, dass die Testdatei befindet sich in
TestDir
. Wenn Ihre ausführbare Datei befindet sich imProgDir
wie du bist, der besagt, dann wird dies immer noch scheitern, weil Ihre relative Pfad nicht stimmt.Versuchen Sie es zu
TestDir\TestFile.txt
statt. IE:StreamReader sr = new StreamReader("TestDir\TestFile.txt");
Den FileInfo Konstruktor mit einem einzigen parameter vom Typ string. Versuchen Sie Anführungszeichen um TestFile.txt.
Ändern
FileInfo file = new FileInfo(TestFile.txt);
zu
FileInfo file = new FileInfo("TestFile.txt");
Es sei denn, TestFile ist ein Objekt mit einer Eigenschaft namens
txt
vom Typ string, in dem Fall müssen Sie das Objekt erstellen, bevor Sie versuchen, es zu benutzen.Können Sie Weg.kombinieren, um das aktuelle Verzeichnis zu erstellen und dann kombinieren Sie den Pfad der Datei, die Sie brauchen
Die einfachste Möglichkeit wäre, nur den Datei-Namen (nicht den ganzen Pfad) und "TestDir" und geben Sie die StreamReader-einen relativen Pfad.