none
Работа с файлами и папками C# RRS feed

  • Вопрос

  • Всем привет.

    Возникла необходимость копировать содержимое папки в другую папку и затем очистить исходную папку.

    Копирую содержимое 

    void CopyDir(string FromDir, string ToDir)
        {
          Directory.CreateDirectory(ToDir);
          foreach (string s1 in Directory.GetFiles(FromDir))
          {
            string s2 = ToDir + "\\" + Path.GetFileName(s1);
            File.Copy(s1, s2);
          }
          foreach (string s in Directory.GetDirectories(FromDir))
          {
            CopyDir(s, ToDir + "\\" + Path.GetFileName(s));
          }
        }
    

    А очищаю папку :

    private void ClearDirectory(string directoryPath)
        {
          foreach (string subDir in Directory.GetDirectories(directoryPath))
            Directory.Delete(Path.Combine(directoryPath, subDir), true);
    
          foreach (string currFile in Directory.GetFiles(directoryPath))
            File.Delete(Path.Combine(directoryPath, currFile));
        }
    

    Теперь сам вопрос. 

    В папке есть папки и файлы доступ к которым не имеет пользователь от которого запущена программа.

    Как пропустить эти папки и файлы и продолжать копирование.

    Сейчас программа копирует все до первого элемента на который нету доступа и все.

    Буду очень признателен.

     

    10 ноября 2010 г. 20:09

Ответы

  • Для каждого получай FileInfo и разбирай его, атрибуты.

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

    • Помечено в качестве ответа Abolmasov Dmitry 16 ноября 2010 г. 13:50
    10 ноября 2010 г. 21:04