| 知乎专栏 | 
SharedPreferences是Android中的数据存储技术,常用来存储一些轻量级的数据。
实际上SharedPreferences是 NoSQL 数据库,用于处理的key-value键值对存储,类似Windows 系统的注册表,Linux 系统里的 Berkeley DB (bdb) 以及衍生出的 dba,mdb 这类 hash 表数据库。
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容 Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件. MODE_WORLD_READABLE:表示当前文件可以被其他应用读取. MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
		
        Button buttonPut = (Button) findViewById(R.id.buttonPut);
        buttonPut.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //实例化SharedPreferences对象
                SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
                //实例化SharedPreferences.Editor对象
                SharedPreferences.Editor editor = sharedPreferences.edit();
                //用putString的方法保存数据
                editor.putString("name", "Neo");
                editor.putString("nickname", "netkiller");
                editor.putBoolean("sex", true);
                editor.putInt("age", 30);
                editor.putFloat("tall", 180.23f);
                Set<String> books = new HashSet<String>();
                books.add("Netkiller Linux 手札");
                books.add("Netkiller Java 手札");
                books.add("Netkiller Android 手札");
                editor.putStringSet("books", books);
                //提交当前数据
                editor.commit();
            }
        });
		
			
		
		
        Button buttonGet = (Button) findViewById(R.id.buttonGet);
        buttonGet.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //实例化SharedPreferences对象
                SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
                //使用getString方法获得value,
                String name = sharedPreferences.getString("name", "");
                String nickname = sharedPreferences.getString("nickname", "");
                boolean sex = sharedPreferences.getBoolean("sex", false);
                int age = sharedPreferences.getInt("age", 0);
                float tall = sharedPreferences.getFloat("tall", 0f);
                Set<String> books = sharedPreferences.getStringSet("books", null);
                Log.i("SharedPreferences", String.format("%s,%s,%s,%s,%s,%s", name, nickname, sex, age, tall, books.toString()));
            }
        });
		
		
			
		
		
		SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
		if (sharedPreferences.contains("nickname")) {
            Log.i("SharedPreferences", sharedPreferences.getString("nickname", ""));
        }else{
            Log.i("SharedPreferences", "key: nickname 不存在");
        }
		
		
			
		
		
	SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
	SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.remove("nickname");
    editor.commit();
    
    Log.i("SharedPreferences", sharedPreferences.getAll().toString());
		
			
		
		
	SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
	SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    editor.commit();
    Log.i("SharedPreferences", sharedPreferences.getAll().toString());		
		
			
		SharedPreferences 的数据存储再一个 xml 文件中,他的地址是:
		
//<package name>应替换成应用的包名, <name>
File xmlFile = new File("/data/data/<package name>/shared_prefs/<name>.xml");		
		
			
			
			<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">陈景峰</string> <string name="nickname">netkiller</string> <int name="age" value="30" /> </map>