2017-01-09 2 views
0

Я импортирую информацию из XML-файлов в базу данных SQL. Импорт работает нормально, но некоторые из файлов XML имеют ошибки в них, поэтому код выходит из строя. Я улавливаю исключение и пытаюсь переместить файл в папку с ошибкой, но, как я ранее читал из файла, я получаю сообщение об ошибке, указывающее, что файл используется другим процессом. Я искал, но havent натолкнулся на любой способ лечения этого еще. Я попытался сохранить документ, но все еще используется, когда я пытаюсь переместить. Ниже приведен образец кода, в котором я пытаюсь переместить файл для справки. Любые предложения о том, как вылечить это, будут отличными и заблаговременно за информацию.Как закрыть XMLDocument в C#

XmlDocument doc = new XmlDocument(); 
try 
{ 
    doc.Load(st); 
} 
catch(Exception ex) 
{ 
    doc.Save(st); 
    if (File.Exists(st)) 
     File.Move(st, st + "\\Error"); 
} 
+0

вы можете указать структуру папок. Где ваш XML-файл в настоящее время существует и где вы пытаетесь его переместить? –

+0

Вы уверены, что XMLDocument держит его открытым? Он никогда не должен этого делать, поскольку он просто загружает его, и все. –

+0

'XmlDocument' не может загружать содержимое файла, но файл все еще используется. Не пытайтесь переместить файл, просто скопируйте его и выполните очистку позже. –

ответ

0

Попробуйте

XmlDocument doc = new XmlDocument(); 
try 
{ 
    doc.Load(st); 
} 
catch(Exception ex) 
{ 
    //doc.Save(st);      -- why do you need to save a file that exists? 
    //if (File.Exists(st))    -- it returns always true 
    // File.Move(st, st + "\\Error"); -- wrong path 

    File.Move(st, Path.Combine("C:\\Error", Path.GetFileName(st))); 
} 
+0

Это сработало спасибо, сохранить, проверить, существует ли и т. Д. Jsut тестировал разные вещи, чтобы узнать, освободил ли он файл. благодаря –

Смежные вопросы