android studio 读取内存txt文件_SharedPreference与文件存储

这篇博客主要探讨Android中的SharedPreferences存储和内部、外部文件存储。内容包括SharedPreferences的使用场景、存储模式,以及内部存储的Context.getFileDir()、getCacheDir()方法,外部存储的获取和使用,同时讲解了清除缓存与清除数据的机制。
摘要由CSDN通过智能技术生成

Android常用数据存储方式有SharedPreferences存储数据(虽然还是属于内部存储)、文件存储(内部,外部)、SQLite数据库存储、ContentProvider存储数据、网络存储数据等几种。本篇博客主要是介绍Shared Preference的原理与使用,区分内部与外部文件存储,以及它们的使用方式。那就从清除缓存与清除数据到底清除了什么这个问题开始吧!

内部存储 InternalStorage

在Android开发中,内存 Memory、内部存储 InternalStorage、外部存储 ExternalStorage这三者有啥区别呢? 在我们打开手机设置 -> 应用管理,随便选择一个软件,然后会看到一个是清除缓存的按钮,一个清除数据的按钮,那么当点击清除缓存的时候清除的是哪里的数据?当点击清除数据的时候又是清除的哪里的数据呢? 打开Device File Explorer会看到如下目录结构:

e2458e620306814b354b92abe5655a6c.png

其实在使用SharedPreferenced的时候,将数据持久化存储于本地,其实就是存在这个文件中的xml文件里,App里边的数据库文件就存储于databases文件夹中,还有我们的普通数据存储在files中,缓存文件存储在cache文件夹中,存储在这里的文件我们都称之为内部存储。

下面来说说使用内部存储的代表——SharedPreferences,SharedPreferences也是在开发中使用的比较多的一种方案,用于存放一些类似登录的配置等信息。

SharedPreferences

1、用于存放一些类似登录的配置信息 2、本质上是一个xml文件,是通过类似键值对的方式存放信息 3、位于程序私有目录中,即data/data/[packageName]/shared_prefs

SharedPreferences的操作模式 1、MODE_APPEND:追加方式存储 2、MODE_PRIVATE:私有方式存储,其他应用无法访问 3、MODE_WORLD_READABLE:可被其他应用读取 4、MODE_WORLD_WRITEABLE:可被其他应用写入

SharedPreferences使用方式:

// 取数据
@Override
protected void onCreate(Bundle savedInstanceState) {
    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    etUserName = findViewById(R.id.et_username);
    etPassword = findViewById(R.id.et_password);
    SharedPreferences login_info = getSharedPreferences("login_info", MODE_PRIVATE);
    // 第一个参数为Key,第二个是默认值
    etUserName.setText(login_info.getString("user_name", ""));
    etPassword.setText(login_info.getString("password", ""));
}
​
​
// 存储据
public void userLogin(View view) {
    
    String userName = etUserName.getText().toString();
    String password = etPassword.getText().toString();
    if(TextUtils.isEmpty(userName) || TextUtils.isEmpty(password)){
    
        Toast.makeText(MainActivity.this, "输入不完整", Toast.LENGTH_SHORT).show();
    }
​
    // 存储输入的信息
    // 1、拿到SharedPreference对象
    SharedPreferences loginInfoSP = getSharedPreferences("login_info", MODE_PRIVATE);
    // 2、获取Editor对象
    SharedPreferences.Editor editor = loginInfoSP.edit();
    // 3、通过Editor存储数据
    editor.putString("user_name", userName);
    editor.putString("password", password);
    // 3、调用提交方法
    boolean commit = editor.commit();
    Log.i(TAG, "userLogin: commitRet = " + commit);
​
    // 校验登录结果
    if(!("admin".equals(userNam
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值