Удалить файлы с удаленного компьютера - PullRequest
2 голосов
/ 24 октября 2008

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

Ответы [ 5 ]

4 голосов
/ 24 октября 2008

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

2 голосов
/ 24 октября 2008

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

fi = di.GetFiles (ext);

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

-Brett

1 голос
/ 24 октября 2008

Продолжение:

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

Этот сайт отличный!

0 голосов
/ 24 октября 2008

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

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

0 голосов
/ 24 октября 2008

Я полагаю, вы переходите в сетевой путь? Сбой при запуске программы по локальному пути? Эта строка: fi = di.GetFiles (ext); Вернуть какие-либо объекты fileInfo?

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

...