2014-11-12 2 views
1

Проблема: Я не могу удалить папку (включая содержимое) в папке рабочего стола программно с помощью C#. Если я копирую значение desktopDestinationPath и вставляю его в Проводник Windows, я могу открыть этой папке (вывод, путь действителен). Тест - Directory.Exists (desktopDestinationPath) - возвращает как истинный, и я отбрасываю в код block (вывод, путь действителен) Directory.Delete (desktopDestinationPath, true) - исключение исключений (вывод, путь больше не действителен) Если я копирую значение пути из исключения и вставляю его в проводник Windows, я могу открыть эта папка (вывод, путь действителен)Не удается удалить папку рабочего стола

Что я пробовал: Построить, перестроить, очистить Решение, перезапустить визуальный студия. Кроме того, если я удалю папку вручную и запустил код, папка будет успешно построена. Однако, когда я запускаю второй раз, я получаю исключение . Результат: озадаченный взгляд и этот пост. Извините, если я поставил слишком много деталей. Я открыт, чтобы помочь с решением и критикой на , как я опубликовал (оба помогут мне учиться) Спасибо заранее! Visual Информация о студии находится в нижней части этой записи. Я использую: Microsoft Visual Studio Premium 2013 (C#).

Мой код:

// preceded by other code in the method 
    if (Directory.Exists(desktopDestinationPath)) // desktopDestinationPath is "C:\\Users\<me>\\Desktop\\<folder 1>\\<folder 2>" 
    { 
     Directory.Delete(desktopDestinationPath, true); // exception is thrown here <***> "C:\\Users\\<me>\\Desktop\\<folder 1>\\<folder 2>"    
     // create folder 
     Directory.CreateDirectory(desktopDestinationPath); 
     // Call a method to perform Xcopy 
     ProcessXcopy(SourceLoc, desktopDestinationPath); 
    } 
    // followed by an else which creates folder if it does not exist 

Мой код бросает следующее исключение: // ПРИМЕЧАНИЕ Я использую Pri.Longpath

System.IO.DirectoryNotFoundException был необработанное пользователем кода HResult = -2147024893 Сообщение = Не удалось найти часть пути «C: \ Users \ ljones \ Desktop \ folder 1 \ folder2 \ fldr3 \ fldr4 \ fldr5 \ fldr6 \ fldr7 \ fldr8 \ fldr9 '. Source = mscorlib StackTrace: в System.IO.Directory.DeleteHelper (String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound) в System.IO.Directory.Delete (String fullPath, String userPath, логический рекурсивный, логический checkHost) в системе. IO.Directory.Delete (String path, Boolean recursive) в UnitTests.GatMinerTest.CreateDesktopDestinationFolder (String desktopPath) в каталоге c: \ Users \ some folder \ Source \ Workspaces \ some folder \ some folder \ some folder \ some file: строка 93 at UnitTests.GatMinerTest.IcwIntegrationMethod() в c: \ Users \ some folder \ Source \ Workspaces \ some folder \ some folder \ some folder \ some file: строка 65 InnerException:

Из Интернета Я узнал: Исключение DirectoryNotFoundException бросается, когда часть пути к файлу или каталог не найден. Подтвердите , что каталог отображается в указанном месте. Убедитесь, что каталог существует в указанном месте. // Я честно (99.9%) определенный каталог существует. При использовании относительных путей убедитесь, что текущий каталог верен. Путь может быть неправильным, если вы являетесь при допущении неправильного текущего каталога. // Я честно (99.9%) определенный каталог существует

+1

Пожалуйста, переформатируйте свой вопрос. Вы можете выделить 4 пробела, чтобы получить подсветку синтаксиса и блоки кода. –

+0

Вы используете статический путь? – indian

+0

Nevermind, если вы видели предыдущий комментарий, увидели код ошибки, который вы опубликовали. Можете ли вы опубликовать код, который это делает? Скорее всего, у вас проблема с форматированием строк. Правильно ли вы избегаете литералов? Пример: '' C: \\ SomeFolder \\ SomeOtherFolder "или' @ "C: \ SomeFolder \ SomeOtherFolder" ' – alykins

ответ

1

Благодарим вас за помощь в поиске ответа. В частности, спасибо за советы по размещению вопроса более подходящим образом.

Решение было ошибкой с моей стороны (go figure).

В коде, который я не раскрыл, есть вызов xcopy. Я считаю, что во время тестирования я пробежал мимо этого пункта, и xcopy работал в фоновом режиме (все еще был привязан к моей структуре папок). Поэтому я не смог удалить его.

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

Еще раз спасибо!

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