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.