Удалить файлы с удаленного компьютера
-
04-07-2019 - |
Вопрос
Я пытаюсь удалить каталог, содержащий файлы 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());
}
}
}
Решение
Я думаю, вы должны использовать * .xml вместо простого .xml. Но я также согласен с Kyralessa, сначала протестируйте на своем локальном компьютере, а затем добавьте сложности прохождения по сети.
Другие советы
в DeleteFiles у вас есть следующая строка:
фи = di.GetFiles(доб.);
где ext — это расширение, которое вы передаете, которое, как мне кажется, представляет собой просто «.xml».Программа Get files ищет любые файлы с именем «.xml».GetFiles принимает подстановочные знаки, и я считаю, что именно это вы и собираетесь сделать.Поставьте звездочку (*) впереди и попробуйте.
-Бретт
Последующие действия:
Мне нужно было использовать * .xml (должен был это знать!), и теперь это работает.
Этот сайт отличный!
Я предполагаю, что вы проходите по сетевому пути? Сбой при запуске программы по локальному пути? Эта строка: fi = di.GetFiles (ext); Вернуть какие-либо объекты fileInfo?
Возможно, у вас просто что-то не так, что можно исправить с помощью отладки.
Что вы передаете в качестве аргумента? Используете ли вы подключенный диск или прямую ссылку (т.е. // сервер / папка)?
Вместо вашего ValidateDirectory вы должны использовать Directory.Exists (directory), чтобы посмотреть, может ли он вообще увидеть каталог.