C # не может получить доступ к файлу сразу после его создания - PullRequest
2 голосов
/ 26 марта 2019

У меня есть сценарий, в котором мне нужно проверить, существует ли текстовый файл, если его нет, мне нужно его создать.

Сразу после этого мне нужно заполнить файл текстом.

Вот как выглядит мой код:

if (!File.Exists(_filePath))
{
    File.Create(_filePath);
}

using (var streamWriter = File.AppendText(_filePath))
{
    //Write to file
}

Я получаю исключение (System.IO.IOException) в строке 5, только когда должен быть создан новый файл. Вот исключение:

The process cannot access the file '**redacted file path**' because it is being used by another process.

Я не хочу добавлять что-то вроде Thread.Sleep(1000);, так как это ужасное решение.

Есть ли способ узнать, когда файл снова становится свободным, чтобы я мог записать в него?

Ответы [ 2 ]

5 голосов
/ 26 марта 2019

Просто используйте StreamWriter с параметром append = true.При необходимости он создаст файл.

using (StreamWriter sw = new StreamWriter(_filePath, true, Encoding.Default))
{
   sw.WriteLine("blablabla");
}
4 голосов
/ 26 марта 2019

Вы были так близко, просто удалите первую if, File.AppendText сделает все за вас и создаст файл, если его там нет.

using (var streamWriter = File.AppendText(_filePath))
{
    //write to file
}
...