Как мне создать каталог, если он не существует для создания файла? - PullRequest
180 голосов
/ 02 июня 2010

У меня есть фрагмент кода, который ломается, если каталог не существует:

System.IO.File.WriteAllText(filePath, content);

В одной строке (или нескольких строках) можно ли проверить, существует ли каталог, ведущий к новому файлу, и, если нет, создать его, прежде чем создавать новый файл?

Я использую .NET 3.5.

Ответы [ 5 ]

355 голосов
/ 02 июня 2010

Создать

(new FileInfo(filePath)).Directory.Create() Перед записью в файл.

.... Или, если он существует, то создать (иначе ничего не делать)

* +1007 *
102 голосов
/ 02 июня 2010

Вы можете использовать следующий код

  DirectoryInfo di = Directory.CreateDirectory(path);
30 голосов
/ 02 июня 2010

Как сказал @hitec, вы должны быть уверены, что у вас есть необходимые разрешения, если вы это сделаете, вы можете использовать эту строку, чтобы обеспечить существование каталога:

Directory.CreateDirectory(Path.GetDirectoryName(filePath))

0 голосов
/ 18 декабря 2015

var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));

var file = new FileInfo(filePath);

file.Directory.Create(); Если каталог уже существует, этот метод ничего не делает.

var sw = new StreamWriter(filePath, true);

sw.WriteLine(Enter your message here);

sw.Close();

0 голосов
/ 02 июня 2010

Вы можете использовать File.Exists , чтобы проверить, существует ли файл, и создать его, используя File.Create , если требуется. Убедитесь, что у вас есть доступ к созданию файлов в этом месте.

Если вы уверены, что файл существует, вы можете безопасно в него записать. Хотя в качестве меры предосторожности вы должны поместить свой код в блок try ... catch и перехватить исключения, которые может вызвать функция, если все пойдет не так, как планировалось.

Дополнительная информация для базовых концепций файлового ввода-вывода .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...