2012-02-08 9 views
5

ho un po 'di base di codice che sto usando per eliminare i file di testo all'interno di una determinata directory:Cercando di eliminare i file più vecchi di X giorni 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 è la directory in cui risiedono i file.

intdays è una variabile che determina il numero di giorni per cui i file devono essere conservati.

Per testare il codice, ho impostato su 0, supponendo che eliminerebbe tutti i file nella directory. Tuttavia non lo fa, ma non crea errori.

L'ora "Ora" è # 2/8/2012 13:59:00 PM # che è maggiore di 0. Ma sono confuso sul motivo per cui non elimina il file?

+0

Non dovrebbe essere che quando si sottrae le date con la differenza inferiore a 1 giorno, la proprietà days di TimeSpan è zero? – Oybek

risposta

3

La differenza tra le date è meno di un giorno.

Si sta chiamando la proprietà Days, che è un tipo intero - questo sarà 0 per intervalli di durata inferiore a un giorno.

+0

Grazie per averlo chiarito, l'ho cambiato in> = a scopo di test e ha cancellato i file. Aspetterò un giorno con esso impostato su> per vedere se funziona allora. –

+0

@Downvoter - cura di commentare? – Oded

+1

@ASmith: oppure si può semplicemente usare la proprietà TotalDays, che è un decimale, quindi un intervallo di 12 ore sarebbe 0.5 TotalDays. –

0

ho provato

 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) 

Così, quando si sta sottraendo la date che ha differenza meno di un giorno la proprietà del risultato Days è 0, cioè troncata al valore intero minore.

+0

@Oded Spiacente non notato. Cambiato il linguaggio già. – Oybek

0

è possibile utilizzare LastWriteTime anziché CreateTime, in base a ciò che si sta tentando di ottenere.

Problemi correlati