Я пытаюсь удалить с удаленного компьютера каталог, содержащий файлы 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());
}
}
}





Я предполагаю, что вы проходите по сетевому пути? Не получается при запуске программы по локальному пути? Эта строка: fi = di.GetFiles (ext); Вернуть какие-нибудь объекты fileInfo?
Вероятно, у вас есть какая-то небольшая проблема, которую можно исправить с помощью некоторой отладки.
Я думаю, вам следует использовать * .xml вместо простого .xml. Но я также согласен с Киралессой, сначала протестируйте на своей локальной машине, а затем добавьте сложность прохождения по сети.
в DeleteFiles у вас есть следующая строка:
fi = di.GetFiles (ext);
где ext - это расширение, которое вы передаете, и я считаю, что это просто '.xml'. Get files ищет любые файлы с именем '.xml'. GetFiles принимает подстановочные знаки, и я считаю, что это именно то, что вы собираетесь делать. Поставьте звездочку (*) впереди и попробуйте.
-Бретт
Что вы приводите в качестве аргумента? Вы используете подключенный диск или прямую ссылку (например, // сервер / папку)?
Вместо вашего ValidateDirectory вы должны использовать Directory.Exists (каталог), чтобы увидеть, может ли он вообще видеть каталог.
Следовать за:
Мне нужно было использовать * .xml (должен был знать об этом!), И теперь он работает.
Этот сайт отличный!
Я использую удаленный путь (\\ server \ folderx \ foldery). Эти файлы хранятся на одном из наших серверов, и моя программа очень специфична. Я хочу, чтобы он работал только с определенными каталогами, и все каталоги имели одинаковый формат.