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的工具类呢?

  • 相关阅读:
    网络攻击技术:SQL Injection(sql注入)
    人生若只如初见,何事秋风悲画扇
    TCPClient、TCPListener的用法
    C#中时间的Ticks属性
    string.Empty、" "、null 三者之间的区别
    telnet的使用解析
    public DataTable ExecuteQuery(string sql) 这段话具体意思
    C#中三层架构UI、BLL、DAL、Model详解(送给自学的初学者)
    数据库三层架构
    获取SQL Server数据库的表结构的做法
  • 原文地址:https://www.cnblogs.com/s0611163/p/14846248.html
Copyright © 2011-2022 走看看