2012-02-08 9 views
5

Mam podstawowe kawałek kodu, który używam do usuwania plików tekstowych w danym katalogu:Próbując usunąć pliki starsze niż X dni 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 jest katalog, w którym pliki znajdują.

intdays to zmienna, która określa, przez ile dni pliki powinny być przechowywane.

Aby przetestować kod, ustawiam dni intdays na 0, zakładając, że usunie on jakiekolwiek pliki z Directoy. Jednak tak się nie dzieje, ale nie tworzy błędów.

Czas „Teraz” jest nr 2/8/2012 13:59:00 PM #, która jest większa niż 0. Ale jestem mylić, dlaczego nie następnie usunąć plik?

+0

Shouldn't się okazać, że po odjęciu dat z tą różnicą mniej niż 1 dzień, właściwość dni od TimeSpan zera? – Oybek

Odpowiedz

3

Różnica między datami to mniej niż dzień.

Telefonujesz właściwość Days, która jest typu integer - to będzie 0 dla przedziałów, które są mniej niż dzień.

+0

Dzięki za wyczyszczenie tego, zmieniłem go na> = dla celów testowych i usunąłem pliki. Będę czekać z nim dzień, aby sprawdzić, czy to działa. –

+0

@Dvvovator - proszę o komentarz? – Oded

+1

@ASmith: czy można po prostu użyć właściwości TotalDays, który jest dziesiętny, a więc 12-godzinny Okres byłoby 0,5 TotalDays. –

0

Przetestowałem to

 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) 

Więc kiedy jesteś odjęcie daty, które ma różnicy mniejszej niż jeden dzień własność wyniku Days wynosi 0, tj obcinane do mniejszej wartości całkowitej.

+0

@Oded Sorry, nie zauważyłem. Zmieniono język już. – Oybek

0

możesz użyć LastWriteTime zamiast CreateTime, w zależności od tego, co próbujesz osiągnąć.

Powiązane problemy