2009-10-12 11 views
7

Ich versuche, eine Textdatei in meiner Windows Forms Anwendung zu erstellen. Es funktioniert gut, aber es erstellt die Textdatei im Standardverzeichnis der Anwendung (wie im Ordner bin). Aber ich möchte diese erstellte Textdatei in meinem Benutzerdateiordner speichern. Wie kann ich es tun?Erstellen Sie eine Datei im Ordner userfiles (C#, Windows Forms)

Dies ist mein Code:

FileInfo fileusername = new FileInfo("userinfo.txt"); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

Antwort

16

können Sie Environment.GetFolderPath verwenden Sie den Pfad zu den Benutzerdaten-Ordnern zu erhalten:

string fileName = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "userinfo.txt"); 

Blick in die Dokumentation des Environment.SpecialFolder Enum, um den Ordner, der am besten Ihre Bedürfnisse zu finden.

+0

Ich habe es danke Directory.GetCurrentDirectory() – Nagu

1

einfach den Pfad zum Dateinamen hinzufügen, wie Fileinfo fileusername = new Fileinfo (@ "c: \ Users \ MyUser \ Documents \ userinfo.txt");

+0

Ich möchte nur in meinem Anwendungsordner erstellen (dynamicall) – Nagu

+1

Bitte bleiben Sie aus meinem Dokumentenordner als eine Anwendung. "Meine Dokumente" heißt so, weil * ich * Dinge dort erschaffe, nicht irgendeine zufällige Anwendung. Es gibt genug Programme, die das schon falsch machen. – Joey

1

Zeichenfolge path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

ODER

String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
+0

Bitte bleiben Sie aus meinem Dokumentenordner als eine Anwendung. "Meine Dokumente" heißt so, weil * ich * Dinge dort erschaffe, nicht irgendeine zufällige Anwendung. Es gibt genug Programme, die das schon falsch machen. – Joey

+0

danke für Ihre schnelle Antwort. Aber es tut mir leid, dass ich meine Frage nicht richtig formuliert habe.ich möchte eine Datei in meiner Anwendung nur forlder erstellen (wie c: \\ myapp \\ usercreatedfiles \) Hier möchte ich – Nagu

+0

@Nagu erstellen: tun Sie das nicht: das erfordert den Benutzer, vollständige Berechtigungen für den Ordner zu haben in dem die Anwendung installiert ist, was normalerweise keine gute Sache ist. –

2

Sie können Environment.SpecialFolder verwenden, um einen Dateipfad zu erstellen, die auf meine Dokumente Punkte:

string filePath = System.IO.Path.Combine(Environment.SpecialFolder.ApplicationData.ToString(), "userinfo.txt"); 
+0

Ich habe die Frage falsch gelesen und es bereits behoben – Christian

6

können Sie verwenden, um die Environment.GetFolderPath() Funktion zusammen mit der Environment.SpecialFolder Aufzählung.

Verwendung:

String filePath = Path.Combine(
    Evironment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
    "userinfo.txt"); 

den Dateinamen in den aktuellen Benutzer My Documents Ordner zu erstellen.

1

Aus dem Aussehen davon möchten Sie einfach Ihre Textdatei in einem benutzerdefinierten Verzeichnis erstellen. Mein Rat wäre, eine Konstante für den Pfad zu erstellen (vielleicht in der Datei app.config zu speichern).

<appSettings> 
    <add key="UserInfo" value="/Settings/UserInfo.txt" /> 
</appSettings> 

einen relativen Pfad zu Ihrem exe Verwenden Sie so unabhängig davon, wo Sie Ihre Anwendung die Einstellungen installieren wird immer gespeichert werden, um „PathToExe/Einstellungen/UserInfo.txt“.

Dann würden Sie so etwas wie:

string UserInfoPath = ConfigurationManager.AppSettings["UserInfo"]; 
if (String.IsNullOrEmpty(UserInfoPath)) 
{ 
    // perhaps use a default value or raise an exception 
} 

FileInfo fileusername = new FileInfo(Path.Combine(Application.StartUpPath, UserInfoPath)); 
StreamWriter namewriter = fileusername.CreateText(); 
namewriter.Write(txtUsername.Text); 
namewriter.Close(); 

Sie können jedoch über ein Berechtigungsprobleme kommen mit diesem Ansatz ist es in der Regel eine bessere Idee zu speichern Dinge wie diese entweder in der Registry oder im AppData Verzeichnis.

+0

oh danke sehr sehr – Nagu

Verwandte Themen