Процесс не может получить доступ к файлу «каталог \ файл», потому что он используется другим процессом в C # File Writer - PullRequest
0 голосов
/ 06 ноября 2010

Я получаю эту ошибку, когда пытаюсь сохранить существующий файл:

процесс не может получить доступ к файлу, поскольку он используется другим процессом

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

вот код:

string directory = filepath + "Updates\\" + dir;
if(!Directory.Exists(directory))
{
    Directory.CreateDirectory(directory);
}
remarks = remarks.Trim();
remarks = remarks.Replace("\r\n","<br>");
remarks = remarks.Replace(",","|");
string file = directory + "\\" +  getIndex(barcode) + ".asdt";
StreamWriter writer = new StreamWriter(file,true);
writer.WriteLine(username + "," + barcode + "," + DateTime.Now.ToString("yyyy-MM-dd HH.mm")+ "," + remarks);
writer.Close();

Когда я проверял его, в строке появляется ошибка:

StreamWriter writer = new StreamWriter(file,true);

что может быть причиной этого?

Ответы [ 3 ]

2 голосов
/ 06 ноября 2010

Ваша программа, вероятно, неправильно утилизирует поток файлов, сохраняя файл открытым.

Используйте оператор using для обеспечения правильной утилизации:

using(StreamWriter writer = new StreamWriter(file,true))
{
    writer.WriteLine(username + "," + barcode + "," + DateTime.Now.ToString("yyyy-MM-dd HH.mm")+ "," + remarks);
    writer.Close();
}
0 голосов
/ 06 ноября 2010

попробуйте использовать writer.Flush(); до writer.Close();

0 голосов
/ 06 ноября 2010

Или вы можете обнулить объект записи после закрытия.

...