2010-03-27 5 views
0

C'est extrêmement bizarre puisque le programme réitère le fichier! outfolder et infolder sont tous les deux dans H:/my HD externe en utilisant Windows 7. L'idée est de déplacer tous les dossiers qui ne contiennent que des fichiers avec l'extension db et svn-base. Lorsque j'essaie de déplacer le dossier, je reçois une exception. VS2010 m'indique qu'il ne peut pas trouver le dossier spécifié dans le répertoire. Ce code est itératif à travers dir donc comment peut-il ne pas le trouver! c'est bizarre.File.Move, pourquoi ai-je une exception FileNotFoundException? Le fichier existe

 string []theExt = new string[] { "db", "svn-base" }; 
     foreach (var dir in Directory.GetDirectories(infolder)) 
     { 
      bool hit = false; 
      if (Directory.GetDirectories(dir).Count() > 0) 
       continue; 
      foreach (var f in Directory.GetFiles(dir)) 
      { 
       var ext = Path.GetExtension(f).Substring(1); 
       if(theExt.Contains(ext) == false) 
       { 
        hit = true; 
        break; 
       } 
      } 
      if (!hit) 
      { 
       var dst = outfolder + "\\" + Path.GetFileName(dir); 
       File.Move(dir, outfolder); //FileNotFoundException: Could not find file dir. 
      } 
     } 
    } 
+0

Vous vous rendez compte que vous avez une variable inutilisée dans 'dst' là, n'est-ce pas? –

+0

Ouais, c'était là bc après l'erreur j'ai vérifié s'il voulait un dir + filename vs un dir. –

Répondre

6

Je crois que vous essayez de déplacer tout un répertoire à l'aide File.Move qui attend un nom de fichier. Essayez plutôt d'utiliser Directory.Move car cela vous permet de déplacer des dossiers entiers.

+1

d'oh. Wow, je n'avais aucune idée qu'il y avait une différence ou même que directory.move existe –