C # – Enregistrement d’un fichier ‘.txt’ dans la racine du projet

J’ai écrit du code qui nécessite de sauvegarder un fichier texte. Cependant, je dois le faire enregistrer dans ma racine de projet afin que tout le monde puisse y accéder, pas seulement moi.

Voici la méthode en question:

private void saveFileToolSsortingpMenuItem_Click(object sender, EventArgs e) { try { ssortingng fileName = Microsoft.VisualBasic.Interaction.InputBox("Please enter a save file name.", "Save Game"); if (fileName.Equals("")) { MessageBox.Show("Please enter a valid save file name."); } else { fileName = Ssortingng.Concat(fileName, ".gls"); MessageBox.Show("Saving to " + fileName); System.IO.File.WriteAllText(saveScene.ToSsortingng(), AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName); } } catch (Exception f) { System.Diagnostics.Debug.Write(f); } } 

De nombreuses personnes m’ont dit qu’utiliser AppDomain.CurrentDomain.BaseDirectory contiendrait l’emplacement dynamic de l’emplacement de stockage de l’application. Cependant, lorsque j’exécute ceci, rien ne se passe et aucun fichier n’est créé.

Y a-t-il une autre façon de faire cela ou est-ce que je l’utilise tout simplement complètement?

File.WriteAllText requirejs deux parameters.
Le premier est le nom de fichier et le second est le contenu à écrire

 File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName, saveScene.ToSsortingng()); 

Gardez toutefois à l’esprit que l’écriture dans le dossier en cours peut poser problème si l’utilisateur qui exécute votre application n’a pas l’autorisation d’accéder au dossier. (Et dans le dernier système d’exploitation, l’écriture dans Program Files est très limitée). S’il est possible de changer cet emplacement en celui défini dans Environment.SpecialFolder enum

Je souhaite également suggérer d’utiliser la classe System.IO.Path lorsque vous devez créer des chemins et non une concaténation de chaînes dans laquelle vous utilisez la constante "\" très spécifique du système d’exploitation pour séparer les chemins.

Dans ton exemple j’écrirais

  ssortingng destPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,fileName); File.WriteAllText(destPath, saveScene.ToSsortingng()); 

pas besoin de l’extra + @"\" suffit de faire:

 AppDomain.CurrentDomain.BaseDirectory + fileName 

et remplacer les parameters

 saveScene.ToSsortingng() 

et

 AppDomain.CurrentDomain.BaseDirectory + fileName 

votre code devrait être:

 private void saveFileToolSsortingpMenuItem_Click(object sender, EventArgs e) { try { ssortingng fileName = Microsoft.VisualBasic.Interaction.InputBox("Please enter a save file name.", "Save Game"); if (fileName.Equals("")) { MessageBox.Show("Please enter a valid save file name."); } else { fileName = Ssortingng.Concat(fileName, ".gls"); MessageBox.Show("Saving to " + fileName); System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + fileName, saveScene.ToSsortingng()); } } catch (Exception f) { System.Diagnostics.Debug.Write(f); } } 

vous pouvez lire sur File.WriteAllText ici :

Paramètres

  path Type: System.Ssortingng The file to write to. contents Type: System.Ssortingng The ssortingng to write to the file.