2014-01-03 2 views
0

Я работаю с .NET Compact Framework 3.5 и хочу удалить некоторые определенные папки и их подпапки. Когда я запускаю приложение, он дает IO exception. Я попытался использовать метод Directory.Delete(path), но это не сработало.C# Удаление каталогов

Как я могу решить эту проблему?

Вот мой код:

using System; 
using System.Diagnostics; 
using System.IO; 
using System.Linq; 
using System.Collections.Generic; 
using System.Windows.Forms; 

namespace Reset_Client 
{ 
    static class Program 
    { 
     static void Main(){ 
     myfunc(); 
     MessageBox.Show("Cihaz resetlendi!"); 
     } 

     public static void myfunc() 
     { 
      string mainPath = @"\Storage Card\deneme"; 

      try 
      { 
       DeleteDirectory(mainPath + "CRM"); 
       DeleteDirectory(mainPath + "BHTS"); 
       DeleteDirectory(mainPath + "IMAGES"); 
       DeleteDirectory(mainPath + "STYLES"); 
       DeleteDirectory(mainPath + "TABLES"); 
       DeleteDirectory(mainPath + "LOG"); 

       File.Delete(mainPath + "Agentry.ini"); 
       File.Delete(mainPath + "Agentry.app"); 
       File.Delete(mainPath + "Agentry.usr"); 
      } 
      catch (IOException e) 
      { 
       myfunc(); 
      } 
     } 

     public static void DeleteDirectory(string target_dir) 
     { 
      FileInfo fileInfo = new FileInfo(target_dir); 
      FileAttributes attributes = fileInfo.Attributes; 

      if ((attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 
      { 
       // set the attributes to nonreadonly 
       fileInfo.Attributes &= ~FileAttributes.ReadOnly; 
      } 

      string[] files = Directory.GetFiles(target_dir); 
      string[] dirs = Directory.GetDirectories(target_dir); 

      foreach (string file in files) 
      { 
       File.Delete(file); 
      } 

      foreach (string dir in dirs) 
      { 
       DeleteDirectory(dir); 
      } 

      Directory.Delete(target_dir, false); 
     } 
    } 
} 
+0

Хорошо, я могу удалить все, что я хочу сейчас. Как резюме; Мне нужно удалить - 5 папок (с подпапками) и 3 файла - в одном каталоге. Я могу удалить файлы с помощью метода File.Delete() и удалить каталоги с помощью рекурсивного метода. Вот основная проблема; я не могу сделать два шага. –

+0

Измените свою строку: 'string mainPath = @" \ Storage Card \ deneme ";' 'string mainPath = @" \ Storage Card \ deneme \ ";' как сказано, что вы пропустили "\" –

ответ

0

Попробуйте это ..

var dir = new DirectoryInfo(@FolderPath); 
dir.Delete(true); 
0

Вы не говорите, какой IO exception вы получаете, Вы не обратную косую черту() в вашем пути?

mainPath + "CRM" becomes "\Storage Card\denemeCRM" and not "\Storage Card\deneme\CRM" 
1

Почему бы не удалить каталог рекурсивно:

Directory.Delete(path, true); 

См here.

Также см. here, так как это может быть похоже на то, с чем вы сталкиваетесь.

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