C# - Speichern '.txt " - Datei, um das Projekt Root
Ich geschrieben habe einige code, der verlangt von mir, speichern Sie eine text-Datei. Allerdings muss ich um es zu speichern, zu meinem Projekt-root, so kann jeder darauf zugreifen, nicht nur für mich.
Hier ist die Methode in Frage:
private void saveFileToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
string 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 = String.Concat(fileName, ".gls");
MessageBox.Show("Saving to " + fileName);
System.IO.File.WriteAllText(saveScene.ToString(), AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName);
}
}
catch (Exception f)
{
System.Diagnostics.Debug.Write(f);
}
}
Viele Leute sagten mir, dass mit AppDomain.CurrentDomain.BaseDirectory
enthalten würde, die dynamische Position, wo die app gespeichert wurde. Allerdings, wenn ich diese ausführen, es passiert nichts und keine Datei wird erstellt.
Gibt es einen anderen Weg, dies zu tun, oder bin ich einfach benutzen es völlig falsch?
- Ihre Datei wird in das debug/bin Speicherort (Verzeichnis, von wo es lief). Sie habe nichts falsch machen, nur an der falschen Stelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Datei.WriteAllText erfordert zwei Parameter.
Der erste ist der Dateiname und der zweite ist der Inhalt zu schreiben
Beachten Sie jedoch, dass das schreiben in den aktuellen Ordner könnte problematisch sein, wenn Benutzer Ihre Anwendung ausgeführt wird hat keine Berechtigung auf den Ordner zugreifen. (Und in der neuesten OS schreiben der Programme ist sehr begrenzt). Wenn es möglich ist, diesen Speicherort ändern, um diejenigen definiert, die in Umwelt.SpecialFolder enum
Ich möchte auch vorschlagen, die System.IO.Path-Klasse, wenn Sie brauchen, um zu bauen Wege und nicht ein string-Verkettung, wo Sie mit den sehr 'OS-spezifischen' Konstante
"\"
an getrennte Wege.In deinem Beispiel würde ich schreiben,
kein Bedarf für die extra
+ @"\"
nur:und ersetzen Sie die Parameter
und
Ihr code sollte sein:
Lesen Sie auf
File.WriteAllText
hier: