【问题标题】:Schedule a Task which runs 2 times a day [duplicate]安排每天运行 2 次的任务 [重复]
【发布时间】:2019-11-25 20:18:40
【问题描述】:

我想开发一个工具,可以每天 2 次删除文件夹的所有文件 - 早上和晚上 8:30。 它应该只永久删除所有文件,而不是文件夹。

我的删除代码运行良好,但我的日程安排有问题。我不知道如何编写调度程序代码。谁能帮我用正确的代码来安排它?

public class Delete 
{ 
    public static void main(String[] args) 
    { 
        try
        { 
            Files.deleteIfExists(Paths.get("C:\\Users\\Dekstop\\Dummy")); 
//I want to delete all Files not the Folder
        } 
        catch(NoSuchFileException e) 
        { 
            System.out.println("No such file/directory exists"); 
        } 
        catch(DirectoryNotEmptyException e) 
        { 
            System.out.println("Directory is not empty."); 
        } 
        catch(IOException e) 
        { 
            System.out.println("Invalid permissions."); 
        } 

        System.out.println("Deletion successful."); 
    } 
} 

【问题讨论】:

  • 为什么不使用操作系统级别的调度程序,而不是自己编写?或者可以使用 Quartz 之类的框架。
  • 我想为我的项目制作它,所以不能使用 OS 调度程序....我不熟悉 Quartz,你能告诉我更多关于它的信息吗??
  • 如果你的应用程序真的抛出了一个错误,并与调度程序一起完全停止了怎么办?这就是操作系统调度程序可以提供帮助的地方——它总是会在系统开启时触发
  • @cricket_007 你能告诉我如何使用操作系统调度程序吗?我以前从未使用过它...谢谢:)

标签: java delete-file taskscheduler


【解决方案1】:

你可以使用 Timer.schedule(TimerTask task, Date firstTime, long period) 方法

将第一次设置为早上(任何时间)并将时间段设置为 12 小时即可。

【讨论】:

    【解决方案2】:

    用这个Original post走得更远

    public class ExecuteTimer {
      public static void main(String[] args){
           MyTimer te1=new MyTimer("My_Task1");
           MyTimer te2=new MyTimer("My_Task2");
          Timer t=new Timer();
          t.scheduleAtFixedRate(te1, 0,5*1000);
          t.scheduleAtFixedRate(te2, 0,1000);
       }
    }
    

    MyTimer.class

    public class MyTimer extends TimerTask{
    private String timername ;
    public MyTimer(String n){
      this.timername=n;
    }
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+" "+name+" the task has executed successfully "+ new Date());
        if("Task1".equalsIgnoreCase(name)){
          try {
          Thread.sleep(10000);
          } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
    }
    }
    

    【讨论】:

    • 谢谢,我对代码有疑问,所以我必须创建 TimerTask 类?
    • 是的,根据您的问题。最好与单独的课程一起使用
    • 好的!谢谢哥们:)
    • 它向我显示一个错误:没有找到适合计划的方法
    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2015-05-09
    • 2022-07-27
    相关资源
    最近更新 更多