当前位置: 首页 > 知识库问答 >
问题:

在vertx中编写计划程序以删除文件

严宇
2023-03-14

我想写一个可以返回Future而不是void start的方法

另外,我想在删除文件时应用锁。

public static void start(Vertx Vertx)引发异常{Vertx.settimer(timeInterval,id->{File File=新文件(config.getStringProperty(“File.upload.directory”,null).get());

        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File fileName : files) {
                long diff = new Date().getTime() - fileName.lastModified();
        if (diff > config.getLongProperty("file.upload.cleanup.timer.millisecond", 0).get()) {
                    deleteFileUploads(fileName.getAbsolutePath());
                }
            }
        }
    });
}

private static void deleteFileUploads(String fileName) {
    File file = new File(fileName);
    LOGGER.debug("Name of the file to be deleted"+fileName);
    file.delete();
}

}

相反,我希望我的函数像公共静态未来启动(Vertx Vertx)抛出异常{}

共有1个答案

宋畅
2023-03-14

所以只需将void改为您想返回的内容?问题出在哪里?

public static Future start(Vertx vertx) throws Exception { vertx.setTimer(timeInterval, id -> { File file = new File(config.getStringProperty("file.upload.directory", null).get());

        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File fileName : files) {
                long diff = new Date().getTime() - fileName.lastModified();
        if (diff > config.getLongProperty("file.upload.cleanup.timer.millisecond", 0).get()) {
                    deleteFileUploads(fileName.getAbsolutePath());
                }
            }
        }

    });
    //add new line to do your return here. If you want to get something out of the info above then use a public variable?
    return new Future()......;//define and return what you want here?
}

至于文件锁定,请尝试搜索其他问题。例如,参见这里:Java的file.delete是否执行文件锁定?这里是:锁定执行文件:Windows有,Linux没有。为什么?

 类似资料:
  • 我可以使用带有特定路径的Register ScheduledTask PowerShell cmdlet(即使用-TaskPath“\SomePath\”和-TaskName“SomeName”)在Windows中创建计划任务。我可以使用具有相同参数的Unregister ScheduledTask删除任务。我可以使用Windows“任务调度程序”GUI验证删除。但是,不会删除文件夹(“\Some

  • 问题内容: 我在4.4.2上,尝试通过uri删除文件(图像)。这是我的代码: 目前,这些删除功能均未真正删除文件。我的AndroidManifest.xml中也有此代码: 问题答案: 您为什么不使用以下代码对此进行测试: 我认为问题的一部分是您永远不要尝试删除文件,而只是创建一个具有方法调用的变量。 因此,在您的情况下,您可以尝试: 但是我认为这有点过分。 您添加了一条注释,说明您正在使用外部目录

  • 我正在尝试删除数据库中的一条记录,该记录将更新两个不同表中的值。我有一个学生桌和一个注册桌。如果删除了学生ID(和其他信息),则应该自动删除学生表和注册表中学生ID相同的信息。如果我只是从Student表中删除行,sql会尝试工作,但它说它不能工作,因为该值也包含在Enroll表中。这里是我有的整个删除按钮的代码。我总是收到一条错误消息,说要指定要删除的表,所以我猜语法是错误的,我是如何添加第二个

  • 问题内容: 有没有一种方法可以在运行时从家庭启动器中删除活动?我的意思是从其属性或类似的东西删除。 问题答案: 您可以通过禁用组件,将其从启动器中删除。

  • 我有两个操作step\u 1()和step\u 2(),希望在step\u 1()之后执行step\u 2()。 对于普通java,这将是: 对于vertx,我必须使用vertx-compose()。我说得对吗? 根据https://groups.google.com/forum/#哦!topic/vertx/FuvlPLpoGOA,我不需要序列代码的未来。 “如果你想按顺序完成每个请求,你不需要

  • $format = new \Vtiful\Kernel\Format($fileHandle); $style = $format->strikeout()->toResource();