Произошла ошибка при записи в файл

Я создаю файл. В первый раз после создания файла я сразу же открываю файл, но он показывает ошибку:

«Процесс не может получить доступ к файлу C:\ProjectWork\Websites3\LogsArpita\ErrorLogs\Error_Log_24_4_2014.txt», поскольку он используется другим процессом».

Что это значит? Как я могу сразу открыть файл для дальнейшей операции записи. Я пробовал со следующим кодом.

FileName = String.Concat("Error_Log_", DateTimeStamp + ext);

if (!File.Exists(Server.MapPath("~/LogsArpita/ErrorLogs/" + FileName)))
{
    File.Create(Server.MapPath("~/LogsArpita/ErrorLogs/" + FileName));
}

//Error occured here, below line
StreamWriter tw = new StreamWriter(Server.MapPath("~/LogsArpita/ErrorLogs/" +    FileName), true);

tw.WriteLine("");
tw.Write("\"" + DateTimeStampLog + "\",");
tw.Write("\"Assignments.aspx\",");
tw.Write("\"" + ErrorMessage + "\",");
tw.Write("\"" + TransactVariable + "\"");
tw.Close();

person user1659510    schedule 24.04.2014    source источник


Ответы (1)


Вам не нужен File.Create, потому что конструктор StreamWriter создаст файл, если он не существует

Вот что говорит документация msdn:

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

person Mike Norgate    schedule 24.04.2014
comment
Кроме того, метод File.Create создает и открывает файловый поток и возвращает открытый поток. Поэтому, когда вы используете File.Create, вы должны обрабатывать возвращаемый поток, иначе каждая ваша попытка открыть этот файл будет неудачной. Но вместо этого вы можете просто использовать конструктор StreamWriter и позволить ему делать свою работу. - person Tolga Evcimen; 24.04.2014