2008-10-23 8 views
2

J'essaie de supprimer un répertoire contenant des fichiers XML provenant d'un ordinateur distant. Mon code compile et s'exécute bien, mais quand je vais obtenir une liste de fichiers XML dans le chemin que je spécifie, il ne retourne rien. Ai-je manqué quelque chose de sage?Supprimer des fichiers de l'ordinateur distant

Je l'ai exécuté à partir de mon ordinateur connecté comme moi-même et à partir 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()); 
      } 
     } 
    } 

Répondre

4

Je pense que vous devriez utiliser * .xml au lieu de simplement .xml. Mais je suis également d'accord avec Kyralessa, tester d'abord sur votre machine locale, puis ajouter à la complexité de traverser un réseau.

0

Je suppose que vous passez dans un chemin réseau? Echoue-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 quelque chose de petit qui peut être corrigé par un débogage.

2

à DELetefiles, vous avez la ligne suivante:

fi = di.GetFiles (ext);

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

-Brett

0

Qu'est-ce que vous passez dans comme argument? Utilisez-vous un lecteur mappé ou la référence directe (c'est-à-dire // serveur/dossier)? Au lieu de votre ValidateDirectory, vous devriez utiliser Directory.Exists (répertoire) juste pour voir s'il peut voir le répertoire du tout.

+0

J'utilise un chemin distant (\\ server \ folderx \ foldery) Ces fichiers sont stockés sur l'un de nos serveurs et mon programme est très spécifique. Je veux seulement que cela fonctionne sur certains répertoires et tous les répertoires ont le même format. –

1

Suivi:

je devais utiliser * .xml (aurait dû savoir que!) Et maintenant il fonctionne.

Ce site est génial!