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); }