Android三种存储方式

作者: dayang | 来源:发表于2016-12-06 20:40 被阅读166次
一、SharedPreferences

保存的数据在data/data/<package name>/shared_refs路径下
创建SharedPreferences使用:

  • getSharedPreferences("文件名",访问权限)方法
  • Editor类进行SharePrerences编辑
效果图
Wifi_SharePreferenced.png
public class MainActivity extends AppCompatActivity {
    Switch aSwitch;
    SharedPreferences sharedPreferences;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        aSwitch= (Switch) findViewById(R.id.wifiSwitch);
        sharedPreferences=getSharedPreferences("wifiStatus",MODE_PRIVATE);
        boolean status=sharedPreferences.getBoolean("status",false);
        aSwitch.setChecked(status);
        aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putBoolean("status",b);
        editor.commit();
}});}}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"    android:layout_height="match_parent"
tools:context="cn.ucai.day06_12_5_data.MainActivity">
<Switch
android:id="@+id/wifiSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wifi" />
</RelativeLayout>
二、文件存储方式

随着应用消失的存储方式,在/data/data/<package name>/files,得到该目录下的输入输出流
如果调试程序的机器为真机,目录的命名方式不太一样;

javaFileOutputStream fos =openFileOutput("app.xml", MODE_PRIVATE);

javaFileInputStream fis = openFileInput("app.xml");

取得res文件下的文件夹app.xml文件


资源文件目录.png

javaInputStream inputStream = getResources().openRawResource(R.raw.app);

三、sdcard方式
  • 一种是会随着应用卸载而被删除的sdcard目录文件
    目录为/sdcard/Android/data/<packagename>/files/<目录名>

getExternaleFilesDir(String fileName)

  • 一种不会随着应用卸载而被删除的外部存储
    使用Enviroment类常用的方法:

getExternalStorageDirectory();
得到根目录** /storage/emulated/0**
getExternalStoragePublicDirectory(String fileName)
创建sdcard根目录下创建文件;
getExternalStorageState()
获取外部存储的状态;

相关文章

网友评论

    本文标题:Android三种存储方式

    本文链接:https://www.haomeiwen.com/subject/taskmttx.html