用java搞定时任务,将hashmap里面的值存到文件里面去

发布时间:2024年01月11日

? ? ? ?要实现这个功能,你可以使用Java的TimerTimerTask类来创建一个定时任务。

? ? ? ?首先,你需要创建一个继承自TimerTask的类,重写run方法,将HashMap中的内容写入文本文件。

? ? ? ?然后,使用Timer类的schedule方法来设置定时任务的执行时间。

第一步,创建继承自TimerTask的类

package org.cyl.database.timer;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.TimerTask;

public class WriteToFileTask extends TimerTask {
    private HashMap<String, String> keyValueMap;
    private String filePath;

    public WriteToFileTask(HashMap<String, String> keyValueMap, String filePath) {
        this.keyValueMap = keyValueMap;
        this.filePath = filePath;
    }

    @Override
    public void run() {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            for (Map.Entry<String, String> entry : keyValueMap.entrySet()) {
                writer.write(entry.getKey() + " " + entry.getValue());
                writer.newLine();
            }
        } catch (IOException e) {
            System.err.println("写入文件失败:" + e.getMessage());
        }
    }
}

? ?这个writer.newLine是换行的意思,就是每读取到一对hashmap里面的值时,就换一行。

? ?注意:每次执行这个任务时,都会覆盖原有的文件内容。

第二步,编写测试代码

package org.cyl.database;

import org.cyl.database.timer.WriteToFileTask;

import java.util.HashMap;
import java.util.Timer;

public class Main {
    public static void main(String[] args) {
        HashMap keyValueMap=new HashMap();
        keyValueMap.put("1","2");
        keyValueMap.put("3","4");
        Timer timer=new Timer();
        timer.schedule(new WriteToFileTask(keyValueMap, "./log.txt"), 0, 2 * 1000); // 每隔1分钟执行一次
    }
}

?这里我是存放在项目文件目录里面的log.txt文件中,然后是每两秒种写一次。

第三步,看成果。

文章来源:https://blog.csdn.net/m0_63251896/article/details/135539000
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。