2008-10-23 5 views
2

Я пытаюсь удалить каталог, содержащий файлы XML с удаленного компьютера. Мой код компилируется и работает нормально, но когда я иду, чтобы получить список XML-файлов в указанном вами пути, он ничего не возвращает. Я что-то пропустил?Удалить файлы с удаленного компьютера

Я запустил его с моего компьютера, зарегистрированного как я и с другого компьютера, зарегистрированного как другой пользователь. Обе учетные записи имеют полный контроль над каталогом, который содержит файлы XML.

Я использую .NET 2.0.

static void Main(string[] args) { 
     string directory, ext = ".xml"; // have tried xml and .xml 

     if (args.Length != 1) { 
      // do absolutely nothing if we do not exactly 1 argument 
     } else { 
      Console.WriteLine("Argument accepted."); 
      directory = args[0]; 

      // make sure the directory passed is valid 
      if (ValidateDirectory(directory)) { 
       Console.WriteLine("Directory is valid."); 
       DeleteFiles(directory, ext); 
      } 
     } 
     Console.WriteLine("Done."); 
    } 

    static bool ValidateDirectory(string d) { 
     return Regex.IsMatch(d, @""); // I removed my regex - it validates properly 
    } 

    static void DeleteFiles(string d, string ext) { 
     DirectoryInfo di; 
     FileInfo[] fi; 

     di = new DirectoryInfo(d); 
     fi = di.GetFiles(ext); 

     Console.WriteLine("Number of files = " + fi.Length + "."); 
     foreach (FileInfo f in fi) { 
      try { 
       Console.WriteLine(f.FullName); 
       f.Delete(); 
      } catch (Exception ex) { 
       // do nothing when there is an exception 
       // just do not want it to quit 
       Console.WriteLine(ex.ToString()); 
      } 
     } 
    } 

ответ

4

Я думаю, вы должны использовать * .xml вместо простого .xml. Но я также согласен с Kyralessa, сначала тестирую вашу локальную машину, а затем добавляю сложность прохождения через сеть.

0

Предполагаете, вы проходите по сети? Выполняется ли это при запуске программы по локальному пути? Имеет ли эта строка: fi = di.GetFiles (ext); Возвращает любые объекты fileInfo?

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

2

в DeleteFiles, у вас есть следующие строки:

ц = di.GetFiles (внутр);

где ext - это расширение, которое вы передаете, и я считаю, что это просто «.xml». Получить файлы ищет файлы под названием «.xml». GetFiles принимает подстановочные знаки, которые, я считаю, являются тем, что вы намереваетесь делать. Поместите звездочку (*) спереди и попробуйте.

-Brett

0

Что вы переходящая в качестве аргумента? Используете ли вы Mapped-диск или прямую ссылку (то есть // сервер/папку)?

Вместо вашего ValidateDirectory вы должны использовать Directory.Exists (directory), чтобы увидеть, может ли он вообще видеть каталог.

+0

Я использую удаленный путь (\\ server \ folderx \ foldery) Эти файлы хранятся на одном из наших серверов, и моя программа очень специфична. Я хочу, чтобы он работал только с определенными каталогами, и все каталоги имеют одинаковый формат. – 2008-10-23 20:20:28

1

Развейте:

мне нужно использовать * .xml (должно быть известно, что!), И теперь он работает.

Этот сайт замечательный!

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