2013-10-12 13 views
5

Ich arbeite an einem Projekt für eine Klasse. Was ich tun muss, ist geparste Anweisungen in eine Datei zu exportieren. Microsoft hat dieses Beispiel, das erklärt, wie man eine Datei schreiben: mit dem Teil,Datei in Projektordner auf jedem Computer schreiben

// Compose a string that consists of three lines. 
string lines = "First line.\r\nSecond line.\r\nThird line."; 

// Write the string to a file. 
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt"); 
file.WriteLine(lines); 

file.Close(); 

Mir geht es gut, aber ist es eine Möglichkeit, die Datei in das aktuelle Projekt der Umgebung/Lage zu schreiben? Ich möchte das tun, anstatt einen spezifischen Pfad (d. H. "C:\\test.txt") hart zu kodieren.

Antwort

16

Ja, verwenden Sie nur einen relativen Pfad. Wenn Sie @".\test.txt" verwenden (obwohl das @ nur sagt, dass ich ein String-Literal mache, entfernt es die Notwendigkeit für das Escape-Zeichen, so könnten Sie auch ".\\test.txt" tun, und es würde an den gleichen Ort schreiben), wird es die Datei zum aktuellen arbeiten schreiben Verzeichnis, das in den meisten Fällen der Ordner ist, der Ihr Programm enthält.

+0

Sweet aufrufen. Kurz und auf den Punkt. Danke vielmals! – blutuu

8

Sie können Assembly.GetExecutingAssembly().Location verwenden, um den Pfad Ihrer Hauptbaugruppe (.exe) abzurufen. Beachten Sie, dass Sie, wenn sich dieser Pfad in einem geschützten Ordner befindet (z. B. Program Files) nicht dort schreiben können, wenn der Benutzer ein Administrator ist. Verlassen Sie sich nicht darauf.

Hier Codebeispiel:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
string fileName = Path.Combine(path, "test.txt"); 

This question/answer zeigt, wie die Profilordner des Benutzers zu erhalten, wo Sie Schreibzugriff haben werden. Alternativ können Sie den Ordner My Documents des Benutzers verwenden, um Dateien zu speichern - auch hier haben Sie garantiert Zugriff darauf. Sie können diesen Pfad erhalten, indem Sie

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 
Verwandte Themen