安卓数据文件储存之 SharePreferences

基本概念

1.将数据存储到SharedPreferences中

要想使用SharedPreferences来存储数据,首先需要获取到SharePreferences对象。Android中主要提供三种方式用于得到SharedPreferences的对象

(1)Context类中的getSharedPreferences()方法

getSharedPreferences(String name, int mode),此方法接收两个参数。第一个参数是指定SharedPreferences的文件名称,如果指定的文件不存在的话,则会创建一个SharedPreferences文件,SharedPreferences文件都是存放在/data/data/<应用包名>/share_prefs/目录下;第二个参数指定操作模式,目前只有MODE_PRIVATE模式,其余的模式由于过于危险,因此被废弃了。

(2)Activity类中的getSharedPreferences()方法

这个方法和Context中的getSharePreferences()方法相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类型作为SharePreferences的文件名。

(3)PreferencesManager类中的getDefaultSharedPreferences()方法

这是一个静态方法,它接收一个Context类型的参数,并且自动调用当前应用程序的包名作为前缀来命名SharedPreferences文件。
 emsp;获得SharePreferences的对象后,就可以向SharedPreferences文件中来存储数据了,主要分为3步实现:

(1)调用SharePreferences对象的edit()方法来获取一个SharePreferences.Editor对象。

(2)向SharedPreferences.Editor对象中添加数据,比如添加一个boolean类型的数据,调用putBoolean()方法,添加一个字符串,调用putString()方法。

(3)调用apply()方法或者是commit()方法来对添加的数据进行提交。

2.从SharePreferences中读取数据

SharedPreferences对象中提供一系列的get方法,用来存储的数据进行读取,每一中get方法对相应SharePreferences.Editor的一种put方法。这些get方法都接收两个参数,第一个参数是数据对应的key值,第二个参数是默认值,即当传入的键找不到对应的值时,给一个默认值

功能实践

新建一个SharePreferencesTest 安卓工程
image.png

实现布局文件,先找到 activity_main.xml文件,然后布局 两个按钮控件 和一个文本控件


image.png

布局代码
android:id="@+id/save_buttion"
android:text="write_save_Data"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

接下在MainActivity.java里面实现读写文件的代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

public  static  final String TAG = "MainActivity";
private Button save_button;
private Button read_button;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//通过控件id得到布局的控件
save_button = (Button) findViewById(R.id.save_buttion);
save_button.setOnClickListener(this);
read_button = (Button) findViewById(R.id.read_buttion);
read_button.setOnClickListener(this);

    textView = (TextView) findViewById(R.id.text_view);
    textView.setOnClickListener(this);
}

//按钮控件的点击事件
@Override
public void onClick(View v) {

    switch (v.getId())
    {

        case  R.id.save_buttion:
        {
            SharedPreferences.Editor editor  = getSharedPreferences("savedata",MODE_PRIVATE).edit();//初始化一个SharedPreferences对象指定文件名称

// 添加要储存的数据
editor.putString("name","zhangsan");
editor.putInt("age",1234);
editor.putBoolean("single",false);
editor.putString("education","研究生");
editor.apply();//提交

        }
        break;
        case  R.id.read_buttion:
        {
            SharedPreferences  sharedPref  = getSharedPreferences("savedata",MODE_PRIVATE);//指定文件名称

                                    String name =  sharedPref.getString("name","");
                                     String education =  sharedPref.getString("education","");
                                     int age = sharedPref.getInt("age",0);
                                     boolean single = sharedPref.getBoolean("single",true);

            Log.d(TAG,"name is " + name);
            Log.d(TAG,"education is " + education);
            Log.d(TAG,"age is " + age+"\n"+"single is "+ single);
            Log.d(TAG,"age is " + age);

//显示在文本控件上
textView.setText(name+education+age+single);

        }
        break;
        default:
            break;
    }
}

}

数据输出截图


image.png

存储的文件可以通过模拟器工具查看


image.png

你可能感兴趣的:(安卓数据文件储存之 SharePreferences)