Question

J'essaie de supprimer un répertoire contenant des fichiers XML à partir d'un ordinateur distant. Mon code est compilé et fonctionne correctement, mais lorsque je vais chercher une liste de fichiers XML dans le chemin que je spécifie, il ne renvoie rien. Est-ce que je manque quelque chose de permission?

Je l'ai exécuté à partir de mon ordinateur connecté en tant que moi-même et d'un autre ordinateur connecté en tant qu'utilisateur différent. Les deux comptes ont un contrôle total sur le répertoire contenant les fichiers XML.

J'utilise .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());
            }
        }
    }
Était-ce utile?

La solution

Je pense que vous devriez utiliser * .xml au lieu de simplement .xml. Mais je suis également d’accord avec Kyralessa, testez d’abord sur votre machine locale, puis ajoutez-y la complexité de passer par un réseau.

Autres conseils

dans DeleteFiles, vous avez la ligne suivante:

fi = di.GetFiles (ext);

où ext est l'extension que vous transmettez, qui, je crois, est simplement '.xml' Obtenir des fichiers recherche tous les fichiers nommés '.xml'. GetFiles prend des caractères génériques, ce que je pense être ce que vous avez l’intention de faire. Placez un astérisque (*) à l'avant et essayez-le.

-Brett

Suivi:

J'avais besoin d'utiliser * .xml (j'aurais dû le savoir!) et maintenant ça marche.

Ce site est génial!

Je suppose que vous passez dans un chemin de réseau? Cela échoue-t-il lorsque vous exécutez le programme sur un chemin local? Est-ce que cette ligne: fi = di.GetFiles (ext); Renvoyer des objets fileInfo?

Vous avez probablement juste un petit problème qui peut être corrigé par un débogage.

Qu'est-ce que vous transmettez comme argument? Utilisez-vous un lecteur mappé ou la référence directe (// serveur / dossier)?

Au lieu de ValidateDirectory, vous devez utiliser Directory.Exists (répertoire) uniquement pour voir s'il peut voir le répertoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top