zoukankan      html  css  js  c++  java
  • CursorFileManager对cursor文件的读写

    public class CursorFileManager implements CursorManager{public void write(String key, LongCursor cursor) throws IOException
        {
            File file = new File(key);
            if (cursor == null) {
                if (file.exists()) {
                    file.delete();
                }
                return;
            }
    
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(file);
            JSON.writeJSONStringTo(cursor, fileWriter, new SerializerFeature[0]);
        } catch (Exception e) {
            this.logger.error(e.getMessage(), e);
        } finally {
            if (fileWriter != null)
                fileWriter.close();
        }
      }
    
    public LongCursor read(String key){
        JSONReader reader = null;
        try {
            File file = new File(key);
            this.logger.info("try to read cursor from file={}", file.getAbsolutePath());
            if (!file.exists()) {
                return null;
            }
            reader = new JSONReader(new FileReader(file));
            LongCursor cursor = (LongCursor)reader.readObject(LongCursor.class);
            return cursor;
        } catch (Exception e) {
            this.logger.error(e.getMessage(), e);
        } finally {
            if (reader != null)
              reader.close();
        }
        return null;
    }
    

    cursor格式:

    {"biz":"false-0","extraInfo":1469203484000,"from":1469203208000,"to":1469203508000}

    public LongCursor read() {
        LongCursor cursor = cursorManager.read(cursorPath + "/" + fileName);
        if (cursor != null) {
            String biz = cursor.getBiz();
            if (biz != null && biz.length() > 0) {
                String[] secs = biz.split("-");
                shouldWait = Boolean.parseBoolean(secs[0]);
                if (secs.length > 1) {
                    completedOrderId = Long.valueOf(secs[1]);
                }
            }
        }
        return cursor;
    }
    
    public void write(LongCursor cursor) throws IOException {
        cursor.setBiz(shouldWait + "-" + completedOrderId);
        cursorManager.write(cursorPath + "/" + fileName, cursor);
    }
  • 相关阅读:
    摘记
    【题解】网格 & Single Cut of Failure(trick:答案上界)
    题解 CF1404C 【Fixed Point Removal】
    Linux IO模型知识梳理
    Java IO模型知识梳理
    如何回答什么是线程安全?
    MySQL主从复制与备份
    MySQL的高性能索引策略
    CAS(乐观锁)的原理解析
    Java虚拟机的类加载机制
  • 原文地址:https://www.cnblogs.com/ShanHeDiao/p/5889580.html
Copyright © 2011-2022 走看看