При попытке удалить файл XML выдается ошибка «Процесс не может получить доступ к файлу ...» - PullRequest
0 голосов
/ 20 июля 2011

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

Однако файл всегда блокируется, когда я пытаюсь удалить его, как в коде, так и через проводник Windows.Он остается заблокированным, пока я не обновлю страницу в IE.

myDoc.Load(FileUpload2.FileContent);
string XMLpath = Server.MapPath(ConfigurationSettings.AppSettings["PDFLocation"]) + FileUpload2.FileName;
myDoc.Save(XMLpath);
file = new FileInfo(XMLpath);

//here I check if the file is valid. If not, delete

file.Delete(); //This is where it throws the "cannot access the file" error

полный текст ошибки:

The process cannot access the file 'C:\project\files\file.xml' because it is being used by another process. 

Я пытался вставить FileUpload2.FileContent.Dispose(); и FileUpload2.Dispose(); перед удалениемСкажите, но не повезло.

Как освободить файл для удаления?

Ответы [ 4 ]

2 голосов
/ 20 июля 2011

Вы не должны вообще сохранять XML-файл на диск, пока не узнаете, что он действителен.

Чтобы ответить на ваш вопрос, вы оставили открытое FileStream где-то в проверенном коде.
Вам нужнодо Dispose(), предпочтительно с помощью оператора using.

2 голосов
/ 20 июля 2011

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

1 голос
/ 20 июля 2011

Я не знаю, к какому типу относится myDoc ... но если у него есть метод "Close" или "Dispose", то вызовите его, прежде чем пытаться удалить ...

EDIT: если у него нет такого метода, тогда myDoc = null; может помочь.

0 голосов
/ 20 июля 2011

После сохранения файла yout необходимо закрыть его, а также очистить память.

...