android 超轻量级数据存储类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileNotFoundException;  
    import java.io.FileOutputStream;  
    import java.io.IOException;  
    import java.io.OutputStream;  
    import java.io.UnsupportedEncodingException;  
    import java.net.URLDecoder;  
    import java.net.URLEncoder;  
    import java.util.HashMap;  
    import java.util.Map;  
    import java.util.Properties;  
    import java.util.Set;  
      
    import android.content.Context;  
      
    /** 
     * android本地存储 ,主要用于存储简单key value键值对。提供增、删、改、查方法。 可自定义路径 
     *  
     * @author Administrator 
     * 
     */  
    public class LocalStorage {  
        private static Properties properties = new Properties();  
        private static String filepath;  
      
        private LocalStorage() {  
        }  
      
        /** 
         *  
         * @param ctx 
         * @param fileName 
         *            文件名 
         * @return 
         */  
        public static LocalStorage get(Context ctx, String fileName) {  
            return get(ctx.getCacheDir() + "/" + fileName);  
        }  
      
        /** 
         *  
         * @param filePath 
         *            文件绝对路径 
         * @return 
         */  
        public static LocalStorage get(String filePath) {  
            createFile(filePath);  
            filepath = filePath;  
            try {  
                properties.load(new FileInputStream(filepath));  
                return new LocalStorage();  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            return null;  
        }  
      
        private static void createFile(String fileName) {  
            File file = new File(fileName);  
            if (!file.exists()) {  
                String path = file.getAbsolutePath();  
                String[] sourceStrArray = path.split("/");  
                String dirPath = "";  
                for (int i = 0; i < sourceStrArray.length - 1; i++) {  
                    if (!sourceStrArray[i].equals("")) {  
                        dirPath += "/" + sourceStrArray[i];  
                    }  
                }  
                new File(dirPath).mkdirs();  
                try {  
                    file.createNewFile();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
      
        }  
      
        public String getAsString(String key) {  
            if (key == null) {  
                return null;  
            }  
            Properties props = new Properties();  
            try {  
                props.load(new FileInputStream(filepath));  
                String value = props.getProperty(key);  
                value = URLDecoder.decode(value, "utf-8");  
                return value;  
            } catch (Exception e) {  
                e.printStackTrace();  
                return null;  
            }  
        }  
      
        public int getAsInt(String key) {  
            String str = getAsString(key);  
            if (str == null)  
                return -9999;  
            return Integer.valueOf(str).intValue();  
        }  
      
        public boolean getAsBoolean(String key) {  
            String str = getAsString(key);  
            if (str == null)  
                return false;  
            if (str.equals("true"))  
                return true;  
            return false;  
        }  
      
        public long getAsLong(String key) {  
            String str = getAsString(key);  
            if (str == null)  
                return -9999;  
            return Long.valueOf(str).longValue();  
        }  
      
        public float getAsFloat(String key) {  
            String str = getAsString(key);  
            if (str == null)  
                return -9999;  
            return Float.valueOf(str).floatValue();  
        }  
      
        public double getAsDouble(String key) {  
            String str = getAsString(key);  
            if (str == null)  
                return -9999;  
            return Double.valueOf(str).doubleValue();  
        }  
      
        /** 
         * 添加 
         *  
         * @param keyname 
         * @param keyvalue 
         */  
        public void put(String keyname, Object keyvalue) {  
            // 处理中文乱码  
            String value = keyvalue.toString();  
            try {  
                value = URLEncoder.encode(value, "utf-8");  
            } catch (UnsupportedEncodingException e1) {  
                e1.printStackTrace();  
            }  
            try {  
                OutputStream fos = new FileOutputStream(filepath);  
                properties.setProperty(keyname, value);  
                properties.store(fos, null);  
            } catch (IOException e) {  
            }  
        }  
      
        /** 
         * 更新 
         *  
         * @param keyname 
         * @param keyvalue 
         */  
        public void update(String keyname, String keyvalue) {  
            try {  
                properties.load(new FileInputStream(filepath));  
                OutputStream fos = new FileOutputStream(filepath);  
                properties.setProperty(keyname, keyvalue);  
                properties.store(fos, null);  
            } catch (IOException e) {  
            }  
        }  
      
        /** 
         * 根据key删除 
         *  
         * @param key 
         */  
        public void delete(String key) {  
            try {  
                FileInputStream fis = new FileInputStream(filepath);  
                properties.load(fis);  
                Map<String, String> map = new HashMap<String, String>();  
                Set<Object> keySet = properties.keySet();  
                for (Object object : keySet) {  
                    String objectkey = (String) object;  
                    String value = (String) properties.get(objectkey);  
                    map.put(objectkey, value);  
                }  
                map.remove(key);  
                properties.remove(key);  
                for (java.util.Map.Entry<String, String> entry : map.entrySet()) {  
                    properties.setProperty(entry.getKey(), entry.getValue());  
                }  
                FileOutputStream fos = new FileOutputStream(filepath);  
                properties.store(fos, "delete key:" + key);  
                fos.close();  
                fis.close();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  

使用方法

    // 这里获取LocalStorage对象。参数也可以为文件绝对路径,当然也可以直接传入Context和文件名。  
        LocalStorage localStorage = LocalStorage.get("test.txt");  
        // 增加  
        localStorage.put("key", "哈哈");  
        // 更新  
        localStorage.update("key", "value");  
        // 查找,这里提供多个getAs 方法。取数据找到相应的数据类型  
        localStorage.getAsString("key");  
      
        // 删除  
        localStorage.delete("key");  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:Android自带的下拉刷新组件SwipeRefreshLayout

下一篇:android将闪光灯作为手电筒的实现代码