2014-02-20 4 views
0

Это кажется довольно простой, но я не могу показаться, чтобы выяснить проблемыXmlTextWriter - Доступ к пути запрещен

public static string destinationFile; 

[STAThread] 
private static void Main(string[] args) 
{ 
    //doing something and then calling convert method 
} 

private static void convert(object source, FileSystemEventArgs f) 
{ 
    if (check(FileName)) 
    { 
     //doing something 

     XmlTextWriter myWriter = new XmlTextWriter(destinationFile, null); 

     //doing something 
    } 
} 

private static bool check(string filename) 
{ 
    //check the file and return a boolean result 
    if (sometest) 
    { 
     destinationFile = @"d:/GS"; 
     return true; 
    } 

    return false; 
} 

Когда я запускаю это я получаю:

The process failed: 
System.UnauthorizedAccessException: Access to the path is denied 

мая Я знаю, где я ошибаюсь.

+0

Запустите вашу программу как «Администратор» и попробуйте еще раз –

+0

Я использую windows xp и m уже в учетной записи администратора – user726720

+0

Вы уверены, что администраторы имеют доступ к папке? –

ответ

1

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

В вашем методе check вы устанавливаете destinationFile в «D: \ GS», а затем использовать destinationFile в качестве цели вашего XmlTextWriter.

Возможно, вы хотите что-то как:

XmlTextWriter myWriter = new XmlTextWriter(Path.Combine(destinationFile, FileName), null); 
+0

Это не работает точно, но вдохновлено этим взглядом. Я выяснил свою проблему. Я неправильно использовал переменные. Я использовал полный путь вместо имени, что создавало проблему. Но спасибо за решение. – user726720

0

Как вводить в заблуждение как сообщение об исключении, это может указывать на скрытие файла.

Вы можете проверить это, щелкнув правой кнопкой мыши в Проводнике Windows => Свойства. Включен ли «Скрытый» CheckBox? Если да, снимите флажок и повторите попытку.

Вы также можете удалить его в коде приложения (если это допускает бизнес-логика). Вы можете найти пример кода для этого здесь: How do I write to a hidden file?

+0

Я пытаюсь создать файл xml. Исключение возникает с помощью XMLTEXTwriter – user726720

0

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

var xml = "<?xml version=\"1.0\"?><hello><world>hello world</world></hello>"; 
XDocument xdoc = XDocument.Parse(xml); 
xdoc.Save("d:\test.xml"); 

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

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