Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 超輕量級數據存儲類

android 超輕量級數據存儲類

編輯:關於Android編程

這次可以和看了很不爽的sharedpreferences 說再見了。用法太惡心了。保存屁大點數據還用 commit 。

 

吐槽結束,上代碼

 

LocalStorage.java

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 map = new HashMap();
			Set


 

使用方法

 

 

	// 這裡獲取LocalStorage對象。參數也可以為文件絕對路徑,當然也可以直接傳入Context和文件名。
		LocalStorage localStorage = LocalStorage.get("test.txt");
		// 增加
		localStorage.put("key", "哈哈");
		// 更新
		localStorage.update("key", "value");
		// 查找,這裡提供多個getAs 方法。取數據找到相應的數據類型
		localStorage.getAsString("key");

		// 刪除
		localStorage.delete("key");


 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved