Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top