2012-02-08 35 views
5

Tôi có một chút cơ bản của mã mà tôi đang sử dụng để xóa các tập tin văn bản trong một thư mục nhất định:Đang cố gắng để xóa các tập tin cũ hơn x ngày 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 là thư mục chứa các file cư trú.

intdays là biến số xác định số ngày tệp sẽ được giữ lại.

Để kiểm tra mã, tôi đặt intdays thành 0, giả sử rằng nó sẽ xóa bất kỳ tệp nào trong directoy. Tuy nhiên nó không, nhưng không tạo ra lỗi.

Thời gian "Hiện hành" là # 2/8/2012 13:59:00 PM # lớn hơn 0. Nhưng tôi nhầm lẫn là tại sao nó không xóa tệp?

+0

Không nên là khi bạn trừ ngày với chênh lệch nhỏ hơn 1 ngày, thuộc tính ngày của TimeSpan không? – Oybek

Trả lời

3

Sự khác biệt giữa các ngày là ít hơn một ngày.

Bạn đang gọi thuộc tính Days, là loại số nguyên - đây sẽ là 0 cho các khoảng thời gian dài hơn một ngày.

+0

Cảm ơn bạn đã xóa nội dung đó, tôi đã thay đổi thành> = cho mục đích thử nghiệm và xóa các tệp đó. Tôi sẽ đợi một ngày với nó được thiết lập để> để xem nếu nó hoạt động sau đó. –

+0

@Downvoter - chăm sóc bình luận? – Oded

+1

@ASmith: hoặc bạn chỉ có thể sử dụng thuộc tính TotalDays, là số thập phân, do đó, khoảng thời gian 12 giờ sẽ là 0,5 Tổng số ngày. –

0

Tôi đã thử nghiệm nó

 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) 

Vì vậy, khi bạn đang trừ ngày mà có chênh lệch ít hơn một ngày Days sở hữu của kết quả là 0, nghĩa là cắt ngắn với giá trị số nguyên nhỏ hơn.

+0

@Oded Xin lỗi đã không nhận thấy. Đã thay đổi ngôn ngữ rồi. – Oybek

0

bạn có thể muốn sử dụng LastWriteTime thay vì CreateTime, tùy thuộc vào những gì bạn đang cố gắng đạt được.

Các vấn đề liên quan