Tôi có một thư mục liên tục điền vào các tệp "vật phẩm". Nhiều chương trình khác nhau kết xuất các tệp tạm thời của họ trong thư mục này và không chắc rằng các chương trình này sẽ sớm tự làm sạch.Phương pháp hiệu quả nhất liên tục xóa tệp cũ hơn X giờ trên Windows là gì?
Trong khi đó, tôi muốn viết chương trình liên tục xóa các tệp trong thư mục này khi chúng trở thành cũ, mà tôi sẽ xác định là "cũ hơn 30 phút".
Một cách tiếp cận điển hình là có cơ chế hẹn giờ liệt kê các tệp trong thư mục, bộ lọc trên nội dung cũ và xóa nội dung cũ. Tuy nhiên, cách tiếp cận này không phải là rất thực hiện trong trường hợp của tôi bởi vì thư mục này có thể hình dung chứa 10 hoặc hàng trăm ngàn tập tin chưa đủ điều kiện như cũ. Do đó, cách tiếp cận này sẽ liên tục lặp trên cùng hàng ngàn tệp để tìm các tệp cũ.
Điều tôi muốn thực sự muốn làm là triển khai một số loại trình nghe thư mục đã được thông báo về bất kỳ tệp mới nào được thêm vào thư mục. Người nghe này sau đó sẽ thêm các tệp đó vào hàng đợi để xóa xuống đường. Tuy nhiên, dường như không có cách nào để thực hiện một giải pháp như vậy trong các ngôn ngữ tôi lập trình (ngôn ngữ JVM như Java và Scala).
Vì vậy: Tôi đang tìm cách hiệu quả nhất để giữ một thư mục "sạch như có thể" trên Windows, tốt nhất là với ngôn ngữ JVM. Ngoài ra, mặc dù tôi chưa bao giờ lập trình với Powershell, tôi sẽ xem xét nó nếu nó cung cấp loại chức năng này. Cuối cùng, nếu có các công cụ của bên thứ ba ngoài đó để làm những việc như vậy, tôi muốn nghe về chúng.
Cảm ơn.
Cảm ơn Kelly. Trên các tệp 100k, một cuộc gọi listFiles() với một AgeFilter mất khoảng 3 phút. Sử dụng dir/OD và sau đó phân tích cú pháp chuỗi kết quả cho các tệp tôi cần (theo thời gian) liên tục chạy khoảng 4 giây. Cải tiến lớn! –
Cảm ơn mọi người vì những câu trả lời tuyệt vời. Đối với trường hợp cụ thể của tôi, trên Windows, sự kết hợp của việc sử dụng java ProcessBuilder và các lệnh hệ thống phù hợp sẽ nhanh hơn nhiều so với cách sử dụng phương thức truyền thống AgeFilter dựa trên java truyền thống –