要实现这个功能,你可以使用Java的Timer
和TimerTask
类来创建一个定时任务。
首先,你需要创建一个继承自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文件中,然后是每两秒种写一次。