2009-07-29 2 views
4

Я пишу приложение в C#, которое сохраняет данные в xml. Когда я снова открываю приложение, он говорит:Доступ к файлу в .NET

Доступ к пути 'C: \ ProgramData \ Test \ abc.xml' запрещен.

Может ли кто-нибудь помочь мне решить эту проблему.

Есть ли способ найти, почему доступ запрещен.

+0

Не могли бы вы показать, как вы пишете файл? –

ответ

1

использование Unlocker знать, какая программа блокировки файл, и реорганизовать код, если это приложение, вы должны закрыть файл после чтения или записи

+1

Я предполагаю, что это покажет, что тот же самый приложение все еще блокирует файл ... –

+0

Да, но он сказал, что у него есть проблема после повторного открытия, закрыто приложение блокирует файл? конечно, если он правильно закрыт –

2

Было бы полезно, чтобы определить точную причину, если вы представляете код, с которым вы работаете. Без этого, я предполагаю, что ваше приложение оставляет ручки на Filestream open.

Вы всегда должны распоряжаться неуправляемыми ссылками, используя шаблон удаления (или используя using construct).

2

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

В принципе, просто используйте ключевое слово «using», чтобы убедиться, что ваш писатель правильно закрыт. Код должен выглядеть следующим образом:

using(XmlWriter _myXmlWriter = XmlWriter.Create(outputStream, xmlWriterSettings)) 
{ 
    //Build XML here 
} 
4

Вы, вероятно, получаете эту ошибку, потому что вы работаете Vista, или Win7, и у вас есть UAC включен.

C: \ ProgramData требует, чтобы admin priveledges записывался (но не читался).

Я только что нашел это из-за трудностей, потому что я работал над программой, которая отлично работала на XP, которая использовала System.Environment.SpecialFolder.CommonApplicationData, которая в Vista относится к вышеуказанному местоположению и требует, чтобы приятели писали в этот каталог.

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