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.