zoukankan      html  css  js  c++  java
  • Java 键值对数据本地保存与读取

    代码:

    package com.sux.demo.utils;
    
    import com.alibaba.fastjson.JSONObject;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * 存储工具类
     */
    public class StoreUtil {
    
        private static final String fileDir = "/home/server/import/wifi/log/";
    
        private static final String fileName = "store-kafka-delay-check.log";
    
        private static Object lock = new Object();
    
        public static void write(String key, Object value) throws IOException {
            Map<String, Object> map = read();
            if (map.containsKey(key)) {
                map.remove(key);
            }
            map.put(key, value);
            String strJson = JSONObject.toJSONString(map);
    
            synchronized (lock) {
                mkdirs();
                FileOutputStream fos = new FileOutputStream(fileDir + fileName);
                byte[] bytes = strJson.getBytes(Charset.forName("utf-8"));
                fos.write(bytes);
                fos.close();
            }
        }
    
        public static Object read(String key) throws IOException {
            Map<String, Object> map = read();
            if (map.containsKey(key)) {
                return map.get(key);
            }
            return null;
        }
    
        private static Map<String, Object> read() throws IOException {
            synchronized (lock) {
                mkdirs();
                File file = new File(fileDir + fileName);
                if (file.exists() && file.isFile()) {
                    FileInputStream fis = new FileInputStream(fileDir + fileName);
                    byte[] bytes = new byte[fis.available()];
                    fis.read(bytes, 0, bytes.length);
                    fis.close();
                    String strJson = new String(bytes, Charset.forName("utf-8"));
                    return JSONObject.parseObject(strJson);
                } else {
                    return new HashMap<>();
                }
            }
        }
    
        private static void mkdirs() {
            File file = new File(fileDir);
            if (!file.exists() && !file.isDirectory()) {
                file.mkdirs();
            }
        }
    
    }
    View Code

    自己写的一个服务程序需要这个功能,为什么我会需要一个这么low的工具类呢?

  • 相关阅读:
    2. 商城项目完整购物链路 lq
    如何看源码? lq
    事务的了解 lq
    1. 商城业务架构分析 lq
    并发的基础知识 lq
    mysql 索引 lq
    mysqlinnodb了解 lq
    IE6.0、IE7.0 与FireFox CSS兼容的解决方法
    CSS:html/css教程:背景图片的定位问题详解
    IE6 BUG
  • 原文地址:https://www.cnblogs.com/s0611163/p/14846248.html
Copyright © 2011-2022 走看看