阳光沙滩
让学习编程变得简单
【android学习笔记三】数据持久化
发表于 2020-02-15    阅读次数 273

数据持久化

向本地目录中写入文件

    //path = "/data/data/com.zhangtao.androidlearndemo/data.txt"该应用的文件目录
    FIle file = new File(path);
    try{
        if(!filePath.exists()){
            filePath.createNewFile();
        }
        FileOutputStream out = new FileOutputStrea(filePath);
        out.write(("写入内容").getBytes());
        out.close();
    }catch (Exception e){
         e.printStackTrece();
    }

获取保存路径

this.getFilesDir();//返回该应用的files路径:/data/user/0/cosm.zhangtao.androidlearndemo/files
 this.getCacheDir();//返回该应用的cahe路径

输入合法性检查

  • 输入判空
    • 方式一:
    //检查输入合法性
    if(Info.length() == 0){
        Toast.makeText(this, "账号不得为空!", Toast.LENGTH_SHORT).show();
        return;
    }
    if(psd.length() == 0){
        Toast.makeText(this, "密码不得为空!", Toast.LENGTH_SHORT).show();
        return;
    }
方式二:
        //另一种方式:
    if( TextUtils.isEmpty(Info)){
        Toast.makeText(this, "账号不得为空!", Toast.LENGTH_SHORT).show();
        return;
        }
    if(TextUtils.isEmpty(psd)){
        Toast.makeText(this, "密码不得为空!", Toast.LENGTH_SHORT).show();
        return;
       }

读取保存的数据

    try{
        FileInputStream in = this.openFileInput("data.text");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
        String result = bufferedReader.readLine();
        resultShow.setText("result:"+result);
        Log.d("TEST","文件读取结果:" +result);
    }catch (Exception e){
        e.printStackTrace();
    }

将数据保存到SD卡

  • 获取SD卡的路径和状态
    //路径
    File exFile =  Environment.getExternalStorageDirectory();
    //状态
    String state = Environment.getExternalStorageState();
    Log.d("Study",exFile.toString())
  • 获取SD卡的存储空间信息
    File exF = Environment.getExternalStorageDirectory();
    long freeSize = exF.getFreeSpace();//剩余空间大小
    long totalSize = exF.getTotalSpace();//总空间大小
    //利用formatter转换数据,使数据更简洁清晰
    String strFreeSize = Formatter.formatFileSize(v.getContext(),freeSize);
    String strTotalSize = Formatter.formatFileSize(v.getContext(),totalSize);
    String result = "SD卡信息:"+ strFreeSize + "/" + strTotalSize;

SharePreference

  • 使用步骤
    1. 声明该对象
    2. 设置该对象的名字和模式
    3. 获取该对象的编辑对象 | 读取该对象对应key的值
    4. 编辑对象的值
    5. 提交修改
//1.创建sharedpreference对象
    SharedPreferences mSharePreference;
//2.设置名字和模式
    mSharePreference = this.getSharedPreferences("setting_info", MODE_PRIVATE);
//3.1获取指定key的值---如果没有则返回默认值
    boolean check = mSharePreference.getBoolean("set_Share",false);
//3.2获取该对象的编辑对象
    SharedPreferences.Editor editor = mSharePreference.edit();
//4.编辑该对象
    editor.putBoolean("set_Share", isChecked);
//5.编辑完成后提交,保存数据
    editor.commit();