2011-06-23 6 views
7

Tengo dos webmethods. La primera es:El archivo eliminado aún aparece en Directory.GetFiles result

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

el otro es:

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

Voy a llamar a estos métodos, así:

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

A pesar de la eliminación del archivo "1.xml", la llamada a Directory.GetFiles("*.xml"); aún devuelve "1.xml" en los resultados. En otras palabras, no parece haber sido eliminado.

Y entonces, cuando el resultado de bucle, trato de leer el archivo, obtener el FileNoFoundException

+0

lo siento, quiero decir, que había eliminado el archivo, pero que había sido buscado por el directorio.getfiles ("*. Xml"); – shenhengbin

+4

@Scott: ¿Quiere decir que tenía la intención de eliminar el archivo, pero no parecía borrarse cuando llamó a getfiles? –

+0

Hola @Scott, es posible que desees editar tu pregunta para que quede más clara. ¿Tengo razón al decir que incluso después de haber llamado deleteFile ("1.xml"), getAllFile() sigue encontrando "1.xml"? –

Respuesta

3

He encontrado que las clases DirectoryInfo/FileInfo no siempre se actualizan. En esos casos, debe llamar al método Refresh en las instancias de Directorio/Archivo.

+0

** ¿A qué te refieres con ** exactamente? Llamé 'Refresh()' en 'DirectoryInfo' sí mismo, y en cada' FileInfo' de 'GetFiles()', y en cada 'DirectoryInfo' de' GetDirectories() '. Aún así, los retornos de 'GetFiles.Length' cuentan con archivos eliminados. – Geri

0

No sé, pero sospecho que el resultado de sus webmethods se almacena en caché en alguna parte.

Cuestiones relacionadas