Если исходный каталог не существует, создайте его, но если пользователь отменит сохранение, удалите вновь добавленные папки - PullRequest
0 голосов
/ 31 марта 2020

Я хочу сохранить текстовое поле в текстовом файле .txt, созданном в специальном каталоге, используя SaveFileDialog.

Но, скажем, мой путь не существует: я хотел бы, чтобы, когда появляется диалоговое окно чтобы узнать, где пользователь хочет сохранить свой TXT-файл, в диалоговом окне автоматически создаются отсутствующие папки, если они отсутствуют. Но мне также нравится, что если пользователь отменяет свое сохранение, вновь созданную папку стирают, если они пусты.

Другими словами: диалоговое окно SaveFileDialog отображается в исходном каталоге, но если этот начальный каталог равен нулю , мой код создает этот каталог, НО, если пользователь отменяет, мой код стирает созданный каталог.

Вот мой пример: я хочу сохранить мой .txt в Desktop \ FolderExistingOrNot, но если папка FolderExistingOrNot я хочу создать Это. Но если пользователь отменяет, я хочу удалить, если FolderExistingOrNot пуст.

private void btn_SAVE_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.DefaultExt = "txt";
    sfd.Filter = ".TXT (*.txt)|*.txt";
    sfd.FileName = textBox1.Text;
    sfd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\FolderExistingOrNot";
    //Directory.CreateDirectory(sfd.InitialDirectory); // could use that but if the user cancel, this folder will not be destroyed
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        File.WriteAllText(sfd.FileName, textBox2.Text);
    }
    else // if the user cancel the saving
    {
        // I would like to erase the folder FolderExistingOrNot if it's empty
    }
}

Это может быть просто, но я не понял, как это сделать.

1 Ответ

1 голос
/ 01 апреля 2020

Это сработало для меня, когда я тестировал его.

    SaveFileDialog sfd = new SaveFileDialog();
    sfd.DefaultExt = "txt";
    sfd.Filter = ".TXT (*.txt)|*.txt";
    sfd.FileName = textBox1.Text;

    string mypath = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\FolderExistingOrNot";
    Directory.CreateDirectory(mypath);

    sfd.InitialDirectory = mypath;
    //Directory.CreateDirectory(sfd.InitialDirectory); // could use that but if the user cancel, this folder will not be destroyed
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        File.WriteAllText(sfd.FileName, textBox2.Text);
    }
    else // if the user cancel the saving
    {
        if (Directory.GetFiles(mypath).Length == 0)
        {
            Directory.Delete(mypath);
        }
    }
...