Как сделать так, чтобы StreamWriter сам создавал себе отсутствующую директорию

using (StreamWriter sw = new StreamWriter(path,true, Encoding.Default))
{
    sw.Write("Hello");
}

У меня есть только путь path, допустим F:\New\text.txt. Папки New не существует. При запуске ругается на то, что нету директории. Если ее добавить - работает. Пилить строку не хочется. Нельзя как-то заставить StreamWriter создавать нужные директории автоматически?


Ответы (1 шт):

Автор решения: aepot

Никак, он такое не умеет.

Зато можно вот так.

Directory.CreateDirectory(Path.GetDirectoryName(path)); // создает каталог, если его нет.

using (StreamWriter sw = new StreamWriter(path, true))
{
    sw.Write("Hello");
}

Так же изучите класс Path, там много всякого полезного.

Кстати, вместо SteamWriter попробуйте File.AppendAllText() или File.AppendAllLines(). Возможно станет удобнее. Методы на вход принимают строку и массив строк соответственно.

Избегайте использования Encoding.Default, так как кодиравка по умолчанию на одном компьютере может быть одна, на другом - другая, и в результате файл, записанный на одной машине может быть некорректроно прочитан на другой.

Без явного указания кодировки, файл будет записан в кодировке UTF-8 без BOM.

→ Ссылка