2009-10-12 19 views
7

Sto provando a creare un file di testo nell'applicazione Windows Forms. Funziona bene, ma sta creando il file di testo nel percorso predefinito dell'applicazione (come nella cartella bin). Ma voglio salvare il file di testo creato nella cartella dei miei file utente. Come posso farlo?Creare un file nella cartella userfiles (C#, Windows Forms)

Questo è il mio codice:

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

risposta

16

È possibile utilizzare Environment.GetFolderPath per ottenere il percorso della cartella dati utente:

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

Guardate nella documentazione della Environment.SpecialFolder enum al fine di trovare la cartella che meglio si adatta alle vostre esigenze.

+0

Ho capito grazie Directory.GetCurrentDirectory() – Nagu

1

basta aggiungere il percorso del file, come FileInfo fileusername = new FileInfo (@ "c: \ Users \ Documents MyUser \ userinfo.txt \");

+0

Voglio creare solo nella mia cartella dell'applicazione (dynamicall) – Nagu

+1

Si prega di stare alla larga dalla mia cartella documenti come un'applicazione. "My Documents" è chiamato così perché * I * crea cose lì, non alcune applicazioni casuali. Ci sono abbastanza programmi che sbagliano già. – Joey

1

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

O

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

Si prega di stare alla larga dalla mia cartella documenti come un'applicazione. "My Documents" è chiamato così perché * I * crea cose lì, non alcune applicazioni casuali. Ci sono abbastanza programmi che sbagliano già. – Joey

+0

grazie per la tua rapida risposta. Ma mi dispiace non aver inquadrato correttamente la mia domanda ..Voglio creare un file solo nella mia applicazione forlder (come c: \\ myapp \\ usercreatedfiles \) qui voglio creare – Nagu

+0

@Nagu: non farlo: questo richiederà all'utente di avere le autorizzazioni complete per la cartella in cui è installata l'applicazione, che in genere non è una buona cosa. –

2

È possibile utilizzare Environment.SpecialFolder per creare un percorso file che punta ai miei documenti:

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

Ho letto male la domanda e l'ho già sistemata – Christian

6

È possibile utilizzare la funzione Environment.GetFolderPath() insieme al Environment.SpecialFolder enumerazione.

Usa:

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

per creare il nome del file nel utenti attuali My Documents cartella.

1

Dal suo aspetto si desidera semplicemente creare il file di testo in una directory personalizzata. Il mio consiglio sarebbe quello di creare una costante per il percorso (magari salvandola nel file app.config).

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

utilizzare un percorso relativo alla exe in modo indipendentemente da dove si installa l'applicazione delle impostazioni saranno sempre salvati "PathToExe/Impostazioni/UserInfo.txt".

Poi si dovrebbe fare qualcosa di simile:

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

Tuttavia, è possibile imbattersi in un problemi di autorizzazioni utilizzando questo approccio, di solito è una migliore idea di memorizzare le cose come questo sia nel Registro di sistema o in AppData directory.

+0

oh grazie mille – Nagu

Problemi correlati