Android中的数据存储: SharedPreferences,内部存储,外部存储,数据库

SharedPreferences

写入:

SharedPreferences可以存储一些简单的数据,数据存储在date——>data中对应的包中。
SharedPreferences是一个接口用getSharedPreferences(“preferenced_test”,MODE_PRIVATE)或getPreferences(MODE_PRIVATE)获得对应的实例。其中getSharedPreferences()的第一个参数为文件名,第二个为MODE。如果文件不存在就会创建。getPreferences()只有一个参数,文件名是默认的。
SharedPreferences的实例不能直接对文件写入数据,需要借助于SharedPreferences.Editor的实例。
而且这个实例必须写完数据必须提交。完整代码如下:

 SharedPreferences preferences=getSharedPreferences("preferenced_test",MODE_PRIVATE);
    //    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor=preferences.edit();
        editor.putString("test1",editText.getText().toString());
        editor.commit();//editor必须要提交

结果如下:
这里写图片描述

这里写图片描述

如图所示在data——>data的对应的包中已经建立了这个叫pp的文件。将文件导出打开可知是我们所写入的值。
###写出
将文件中的数据读出可以直接用preferences.getString()而不需要借助于editor。完整代码如下:

 SharedPreferences preferences =getSharedPreferences("preferenced_test",MODE_PRIVATE);//preferenced_test为文件名
        // SharedPreferences preferences =getPreferences(MODE_PRIVATE);//有一个默认的文件名MainActivity
        String content =preferences.getString("test1","我是默认值");//test1为键值,第二个值为默认值
        textView.setText(content);

将结果显示在TextView中的:
这里写图片描述
可知结果是正确的。

SharedPreferences的完整的代码如下:

public class MainActivity extends Activity implements View.OnClickListener {
   
   private Button button_writer;
    private Button button_read;
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button_read= (Button) findViewById(R.id.read_button);
        button_writer= (Button) findViewById(R.id.writer_button);
        textView = (TextView) findViewById(R.id.text);
        button_writer.setOnClickListener(this);
        button_read.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.writer_button:
                shared_writer();
                break;
            case R.id.read_button:
                SharedPreferences preferences =getSharedPreferences("pp",MODE_PRIVATE);
                String content=preferences.getString("key", "我是默认值");
                textView.setText(content);
                break;
            default:
                break;
        }
    }

    private void shared_writer() {
        SharedPreferences preferences =getSharedPreferences("pp",MODE_PRIVATE);
        SharedPreferences.Editor editor =preferences.edit();
        editor.putString("key","hello word");
        editor.commit();
    }
}

内部存储

内部存储分为两种:1)将数据存储在files文件夹中;2)将数据存储在cache(缓存)文件夹中。
一般我们将一些比较重要的数据存储在files文件夹中,在系统中不会被轻易的删除。对于一些不重要的文件我们存储在cache文件夹中,在系统内存不足的时候这些数据会被删除。这里如果存在缓存中的话可以存储在外部存储的缓存中,利用getCacheDir()可以获得内部存储的缓存目录,用getExternalCacheDir()获得外部存储的缓存目录。他们的共同点是在app被卸载后数据会同时消失。不会存在数据的残留。

将数据存储在files中

存入:

将数据写入files的方法非常简单只需要用openFileOutput(“file_test”,MODE_PRIVATE);//file_test为文件名。
获得输出流,然后再用输出流的方式写入数据就可以了。完整的代码如下:

  FileOutputStream os = openFileOutput("file_test",MODE_PRIVATE);//file_test为文件名。
                    BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(os));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值