C# - сохранение a '.txt файл в корень проекта
Я написал код, который требует от меня сохранить текстовый файл. Однако мне нужно, чтобы он сохранился в моем корне проекта, чтобы любой мог получить к нему доступ, а не только я.
вот метод, о котором идет речь:
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);
}
}
многие люди сказали мне, что с помощью AppDomain.CurrentDomain.BaseDirectory
будет содержать динамическое расположение, где было сохранено приложение. Однако, когда я выполняю это, ничего не происходит, и файл не создается.
есть ли другой способ сделать это, или я просто использовать его совершенно неправильно?
2 ответов
.WriteAllText требуются два параметра.
Первый-это имя файла, а второй-содержимое для записи
File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"\" + fileName,
saveScene.ToString());
имейте в виду, однако, что запись в текущую папку может быть проблематичной, если пользователь, запускающий приложение, не имеет разрешения на доступ к папке. (И в последней ОС запись в файлы программы очень ограничена). Если это возможно, измените это местоположение на те, которые определены в окружающая среда.SpecialFolder перечислимые
Я хотел бы также рекомендовать использование
нет необходимости в дополнительных + @"\"
так же:
AppDomain.CurrentDomain.BaseDirectory + fileName
и заменить параметры
saveScene.ToString()
и
AppDomain.CurrentDomain.BaseDirectory + fileName
ваш код должен быть:
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(AppDomain.CurrentDomain.BaseDirectory + fileName, saveScene.ToString());
}
}
catch (Exception f)
{
System.Diagnostics.Debug.Write(f);
}
}
вы можете прочитать о File.WriteAllText
здесь:
параметры
path Type: System.String The file to write to. contents Type: System.String The string to write to the file.