2011-06-23 14 views
7

Ho due metodi web. La prima è:Il file eliminato viene ancora visualizzato nel risultato Directory.GetFiles

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

L'altro è:

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

Chiamo questi metodi in questo modo:

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

Nonostante l'eliminazione del file "1.xml", la chiamata a Directory.GetFiles("*.xml"); restituisce ancora "1.xml" nei risultati. In altre parole, non sembra essere stato cancellato.

E poi, quando ho ciclo il risultato, cerco di leggere il file, ottenere il FileNoFoundException

+0

mi dispiace, voglio dire, avevo cancellato il file, ma, era stato cercato dal directory.getfiles ("*. Xml"); – shenhengbin

+4

@Scott: Intendi che intendevi eliminare il file, ma non sembra essere stato eliminato quando hai chiamato getfile? –

+0

Ciao @Scott, potresti voler modificare la tua domanda per renderla più chiara. Ho ragione nel dire che anche dopo aver chiamato deleteFile ("1.xml"), getAllFile() trova ancora "1.xml"? –

risposta

3

Ho riscontrato che le classi DirectoryInfo/FileInfo non si aggiornano sempre. In questi casi è necessario chiamare il metodo di aggiornamento nelle istanze Directory/File.

+0

** Cosa intendi ** esattamente? Ho chiamato 'Refresh()' su 'DirectoryInfo' stesso, e su ogni' FileInfo' da 'GetFiles()', e su ogni 'DirectoryInfo' da' GetDirectories() '. Ancora, 'GetFiles.Length' restituisce il conteggio dei file cancellati. – Geri

0

Non lo so, ma ho il sospetto che risultato dei vostri webMethods vengono memorizzate nella cache da qualche parte.

Problemi correlati