2011-06-23 2 views
7

J'ai deux méthodes web. La première est:Le fichier supprimé apparaît toujours dans le fichier Directory.GetFiles résultat

void deleteFile(string filePath) 
{ 
    File.Delete(filePath); 
} 

L'autre est:

string[] getAllFile() 
{ 
    // at the same folder.... 
    Directory.GetFiles("*.xml"); 
    ..... 
    return .... 
} 

J'appelle ces méthodes comme ceci:

deleteFile("1.xml") 
getAllFile(); 

Malgré la suppression du fichier "1.xml", l'appel à Directory.GetFiles("*.xml"); renvoie toujours "1.xml" dans les résultats. En d'autres termes, il ne semble pas avoir été supprimé.

Et puis, quand je boucle le résultat, essayez de lire le fichier, obtenir le FileNoFoundException

+0

je suis désolé, je veux dire, j'avais supprimé le fichier, mais, il avait été recherché par le directory.getfiles ("*. Xml"); – shenhengbin

+4

@Scott: Voulez-vous dire que vous avez l'intention de supprimer le fichier, mais il ne semble pas avoir été supprimé lorsque vous avez appelé getfiles? –

+0

Salut @ Scott, vous pouvez modifier votre question pour le rendre plus clair. Ai-je raison de dire que même après avoir appelé deleteFile ("1.xml"), getAllFile() trouve toujours "1.xml"? –

Répondre

3

J'ai découvert que les classes DirectoryInfo/FileInfo ne sont pas toujours mises à jour. Dans ces cas, vous devez appeler la méthode Refresh sur les instances Directory/File.

+0

** Qu'est-ce que tu veux dire ** exactement? J'ai appelé 'Refresh()' sur 'DirectoryInfo' lui-même, et sur chaque' FileInfo' de 'GetFiles()', et sur chaque 'DirectoryInfo' de' GetDirectories() '. Pourtant, 'GetFiles.Length' renvoie les comptes avec les fichiers supprimés. – Geri

0

Je ne sais pas, mais je pense que le résultat de vos webMethods sont mises en cache quelque part être.

Questions connexes