Как сделать так, чтобы StreamWriter сам создавал себе отсутствующую директорию
using (StreamWriter sw = new StreamWriter(path,true, Encoding.Default))
{
sw.Write("Hello");
}
У меня есть только путь path, допустим F:\New\text.txt. Папки New не существует. При запуске ругается на то, что нету директории. Если ее добавить - работает. Пилить строку не хочется. Нельзя как-то заставить StreamWriter создавать нужные директории автоматически?
Ответы (1 шт):
Никак, он такое не умеет.
Зато можно вот так.
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.