2012-02-08 15 views
5

que tengo un poco básico de código que estoy usando para borrar archivos de texto dentro de un directorio dado:Tratando de eliminar los archivos mayores de x días vb.net

For Each file As IO.FileInfo In New IO.DirectoryInfo(filePath).GetFiles("*.txt") 
    If (Now - file.CreationTime).Days > intdays Then file.Delete() 
    Next 

filePath es el directorio donde residen los archivos.

intdays es una variable que determina cuántos días deben conservarse los archivos.

Para probar el código configuré intdays en 0, suponiendo que eliminaría cualquier archivo en el directorio. Sin embargo, no lo hace, pero no crea errores.

El tiempo "Ahora" es # 2/8/2012 13:59:00 PM # que es mayor que 0. ¿Pero no estoy seguro de por qué no lo hace y luego borro el archivo?

+0

¿No debería ser que al restar fechas con la diferencia de menos de 1 día, los días propiedad de TimeSpan cero? – Oybek

Respuesta

3

La diferencia entre las fechas es menos de un día.

Está llamando a la propiedad Days, que es un tipo entero; esto será 0 para intervalos de menos de un día.

+0

Gracias por aclarar eso, lo cambié a> = para propósitos de prueba y eliminó los archivos. Esperaré un día con el conjunto> para ver si funciona entonces. –

+0

@Downvoter - ¿me gustaría comentar? – Oded

+1

@ ASmith: o simplemente puede usar la propiedad TotalDays, que es un decimal, por lo que un intervalo de tiempo de 12 horas sería de 0.5 TotalDays. –

0

Lo he probado

 Dim d = New Date(2012, 11, 21, 16, 0, 0) 
     Dim dGreater = New Date(2012, 11, 21, 17, 0, 0) 
     Dim result = dGreater - d 
     Console.WriteLine(result.Days) 

Así que cuando usted está restando las fechas que tiene diferencia de menos de un día la propiedad Days del resultado es 0, es decir, truncada en el valor entero menor.

+0

@Oded Lo siento no se dio cuenta. Cambió el idioma ya. – Oybek

0

es posible que desee utilizar LastWriteTime en lugar de CreateTime, dependiendo de lo que esté tratando de lograr.

Cuestiones relacionadas