android 超輕量級數據存儲類

分類:IT技術 時間:2017-10-02
    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 = http://outofmemory.cn/code-snippet/82853/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 map = new HashMap();  
                Set 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 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");  

Tags: import java LocalStorage Properties fileName 存儲

文章來源:


ads
ads

相關文章
ads

相關文章

ad