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

简介: 本文介绍了如何使用Java的`Timer`和`TimerTask`类创建一个定时任务,将HashMap中的键值对写入到文本文件中,并提供了完整的示例代码。
   要实现这个功能,你可以使用Java的`Timer`和`TimerTask`类来创建一个定时任务。

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

   **然后**,使用`Timer`类的`schedule`方法来设置定时任务的执行时间。
AI 代码解读

第一步,创建继承自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());
        }
    }
}
AI 代码解读

这个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分钟执行一次
    }
}
AI 代码解读

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

第三步,看成果。

目录
打赏
0
1
1
0
133
分享
相关文章
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
54 3
|
3月前
|
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
114 9
Java HashMap详解及实现原理
Java HashMap是Java集合框架中常用的Map接口实现,基于哈希表结构,允许null键和值,提供高效的存取操作。它通过哈希函数将键映射到数组索引,并使用链表或红黑树解决哈希冲突。HashMap非线程安全,多线程环境下需注意并发问题,常用解决方案包括ConcurrentHashMap和Collections.synchronizedMap()。此外,合理设置初始化容量和加载因子、重写hashCode()和equals()方法有助于提高性能和避免哈希冲突。
37 17
Java HashMap详解及实现原理
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
138 2
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
Java中简单定时任务的实现
在 Java 中实现定时任务有多种方式,每种方式的原理和适用场景不同。`java.util.Timer` 和 `TimerTask` 通过单线程执行任务,适合简单场景;`ScheduledExecutorService` 基于线程池,支持多线程并发,更加灵活和健壮;三种方式各有优劣,开发者可根据需求选择合适的方案。
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
9 0
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
262 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
120 34
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
40 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等