• java LevelDB工具类


    POM依赖

    1. <dependency>
    2. <groupId>org.iq80.leveldb</groupId>
    3. <artifactId>leveldb-api</artifactId>
    4. <version>0.12</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.iq80.leveldb</groupId>
    8. <artifactId>leveldb</artifactId>
    9. <version>0.12</version>
    10. </dependency>

    工具类

    1. package com.sec.iot.util;
    2. import org.apache.commons.lang3.StringUtils;
    3. import org.iq80.leveldb.*;
    4. import org.iq80.leveldb.impl.Iq80DBFactory;
    5. import java.io.File;
    6. import java.io.IOException;
    7. import java.util.ArrayList;
    8. import java.util.List;
    9. /**
    10. * levedb 工具类
    11. *
    12. */
    13. public class LevelDBUtil {
    14. //单例
    15. public static final LevelDBUtil lu = new LevelDBUtil();
    16. // private final DBFactory factory = Iq80DBFactory.factory;
    17. private LevelDBUtil() {
    18. }
    19. //初始化连接
    20. private static DB db = null;
    21. public static void init(String path){
    22. //leveldb只需要建立一次连接
    23. LevelDBUtil ldu = LevelDBUtil.lu;
    24. //"/scada/share/odbcleveldb"
    25. ldu.setPath(path);
    26. ldu.getConnect();
    27. }
    28. private boolean isConnect = false;
    29. //存储路径
    30. private String path;
    31. public void getConnect() {
    32. DBFactory factory = new Iq80DBFactory();
    33. //JniDBFactory.factory;
    34. // 默认如果没有则创建
    35. Options options = new Options();
    36. File file = new File(path);
    37. try {
    38. if (!isConnect) {//单列一个对象,而且只建立一次连接
    39. db = factory.open(file, options);
    40. isConnect = true;
    41. }
    42. } catch (IOException e) {
    43. // TODO Auto-generated catch block
    44. e.printStackTrace();
    45. }
    46. }
    47. /* public static boolean deleteAll(String prefix) {
    48. //String prefix = "UNIT";
    49. List resultList = new ArrayList<>();
    50. DBIterator iterator = db.iterator();
    51. for (iterator.seek(prefix.getBytes()); iterator.hasNext(); iterator.next()) {
    52. String k = JniDBFactory.asString(iterator.peekNext().getKey());
    53. if (!k.startsWith(prefix)) {
    54. break;
    55. }
    56. delete(k);
    57. }
    58. try {
    59. iterator.close();
    60. } catch (IOException e) {
    61. e.printStackTrace();
    62. }
    63. return false;
    64. }*/
    65. /**
    66. * 拼接字符串
    67. *
    68. * @param arr
    69. * @return
    70. */
    71. public static String combine(Object... arr) {
    72. StringBuffer buffer = new StringBuffer();
    73. for (Object obj : arr) {
    74. buffer.append(obj);
    75. }
    76. return buffer.toString();
    77. }
    78. public synchronized static boolean put(String key, String data) {
    79. try {
    80. // db.put(JniDBFactory.bytes(key), JniDBFactory.bytes(data), new WriteOptions().sync(true));
    81. db.put(Iq80DBFactory.bytes(key),Iq80DBFactory.bytes(data),new WriteOptions().sync(true));
    82. return true;
    83. } catch (Exception e) {
    84. e.printStackTrace();
    85. }
    86. return false;
    87. }
    88. public synchronized static String get(String key) {
    89. if (StringUtils.isBlank(key)) {
    90. return null;
    91. }
    92. try {
    93. // byte[] r = db.get(JniDBFactory.bytes(key), new ReadOptions().fillCache(true).verifyChecksums(true));
    94. //
    95. // return JniDBFactory.asString(r);
    96. byte[] r = db.get(Iq80DBFactory.bytes(key),new ReadOptions().fillCache(true).verifyChecksums(true));
    97. return Iq80DBFactory.asString(r);
    98. } catch (Exception e) {
    99. e.printStackTrace();
    100. }
    101. return null;
    102. }
    103. public void close() {
    104. try {
    105. db.close();
    106. } catch (IOException e) {
    107. e.printStackTrace();
    108. }
    109. }
    110. /**
    111. * 压缩数据
    112. */
    113. public synchronized static void compactData() {
    114. try {
    115. //全部压缩数据 已经删除的数据,从硬盘上清除;
    116. db.compactRange(null, null);
    117. } catch (Exception e) {
    118. e.printStackTrace();
    119. }
    120. }
    121. public synchronized static boolean delete(String key) {
    122. if (StringUtils.isBlank(key)) {
    123. return false;
    124. }
    125. try {
    126. db.delete(Iq80DBFactory.bytes(key));
    127. return true;
    128. } catch (Exception e) {
    129. e.printStackTrace();
    130. }
    131. return false;
    132. }
    133. public void destroy() {
    134. close();
    135. }
    136. public String getPath() {
    137. return path;
    138. }
    139. public void setPath(String path) {
    140. this.path = path;
    141. }
    142. }

  • 相关阅读:
    Java中删除元素方法你真的懂了吗?
    ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办?
    【无标题】
    Android sqlite 使用简介
    Java堆栈区别
    get和post请求的区别
    嵌入式分享合集89
    测试内推 | 阿里飞猪、百度、58(招聘)、知乎、欢忻网络、百果园、阿里(Lazada)、深智城、元戎启行招人啦
    一文讲清微服务架构、分布式架构、微服务、SOA
    gradle-2初始化篇(LoadSetings)
  • 原文地址:https://blog.csdn.net/h4241778/article/details/133861281