Файл используется другим процессом .NET - PullRequest
3 голосов
/ 24 июля 2011

Мне нужно создать / добавить текстовый файл и записать в него некоторые данные.Когда я записываю приведенный ниже код в свое приложение ASP.NET, выдает ошибку, что файл используется другим процессом.

if (!File.Exists(path\file))
    File.CreateText(path\file);
using(StreamWriter sw = File.AppendText(Server.MapPath(path\file)))
{
    sw.WriteLine("Text Data");
    sw.Close();
}

Ответы [ 3 ]

5 голосов
/ 24 июля 2011

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

Вам следует либо

  1. дождаться, пока другая программа завершит использование файла
  2. , записать в другой файл
  3. что-то еще, что имеет смысл.

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

Если вы еще этого не сделали (мы не видим весь ваш код), вам необходимо закрыть дескриптор открытого файла из вашего вызова File.CreateText(),поскольку он возвращает StreamWriter с открытым дескриптором к вашему файлу.

5 голосов
/ 24 июля 2011

Вы должны создать такой файл в приведенном ниже коде и закрыть файл после его создания.

if (!File.Exists(""))
{            
    StreamWriter sr =  File.CreateText("");
    sr.Close();
}

Взгляните на этот пример из MSDN .Это покажет вам, как вы можете создать текстовый файл.

ИЛИ, вы можете создать текстовый файл таким образом;Код ниже взят из MSDN

if (!File.Exists(path)) 
{
    // Create a file to write to.
    using (StreamWriter sw = File.CreateText(path)) 
    {

    }   
}
0 голосов
/ 24 июля 2011

У вас есть файл, открытый в текстовом редакторе? Вы недавно открыли его в текстовом редакторе? Если это так, вы должны убедиться, что ваш текстовый редактор полностью закрыт и его процесс завершен.

Если нет, то это, вероятно, означает, что какой-то другой скрипт или какая-то предыдущая версия того же скрипта, которая застряла в бесконечном цикле, открыла файл. Если вы можете позволить себе убить все ваши сценарии ASP.NET, это, вероятно, исправит это.

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