删除早于 x 天的文件

新手上路,请多包涵

我如何才能知道文件是何时使用 java 创建的,因为我希望删除早于某个时间段的文件,目前我正在删除目录中的所有文件,但这并不理想:

 public void DeleteFiles() {
    File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/");
    System.out.println("Called deleteFiles");
    DeleteFiles(file);
    File file2 = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/Uploaded/");
    DeleteFilesNonPdf(file2);
}

public void DeleteFiles(File file) {
    System.out.println("Now will search folders and delete files,");
    if (file.isDirectory()) {
        for (File f : file.listFiles()) {
            DeleteFiles(f);
        }
    } else {
        file.delete();
    }
}

以上是我当前的代码,我现在正在尝试添加一个 if 语句,该语句只会删除一周前的文件。

编辑:

 @ViewScoped
@ManagedBean
public class Delete {

    public void DeleteFiles() {
        File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/");
        System.out.println("Called deleteFiles");
        DeleteFiles(file);
        File file2 = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/Uploaded/");
        DeleteFilesNonPdf(file2);
    }

    public void DeleteFiles(File file) {
        System.out.println("Now will search folders and delete files,");
        if (file.isDirectory()) {
            System.out.println("Date Modified : " + file.lastModified());
            for (File f : file.listFiles()) {
                DeleteFiles(f);
            }
        } else {
            file.delete();
        }
    }

现在添加一个循环。

编辑

我在测试上面的代码时注意到我得到了最后修改:

 INFO: Date Modified : 1361635382096

我应该如何编写 if 循环以说明它是否超过 7 天,当它采用上述格式时将其删除?

原文由 user2065929 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 661
1 个回答

您可以使用 File.lastModified() 获取文件/目录的最后修改时间。

可以这样使用:

 long diff = new Date().getTime() - file.lastModified();

if (diff > x * 24 * 60 * 60 * 1000) {
    file.delete();
}

删除早于 xint )天的文件。

原文由 user2030471 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题