当前位置: 首页 > news >正文

【android开发-16】android中文件和sharedpreferences数据存储详解

1,文件读写方式的数据存储
下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件:

保存文件:

try {  String data = "这是要保存的数据";  FileOutputStream fos = openFileOutput("myFile", Context.MODE_PRIVATE);  OutputStreamWriter osw = new OutputStreamWriter(fos);  BufferedWriter wr= new BufferedWriter (osw);  wr.write(data );wr.close();
} catch (Exception e) {  e.printStackTrace();  
}

在这个例子中,我们使用openFileOutput方法来打开一个文件输出流。我们传递两个参数给这个方法:文件名和模式。模式可以是Context.MODE_PRIVATE(默认),Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITABLE。

读取文件:

try {  FileInputStream fis = openFileInput("myFile");  InputStreamReader isr = new InputStreamReader(fis);  BufferedReader br = new BufferedReader(isr);  String line;  while ((line = br.readLine()) != null) {  Log.e("DATA", line);  }  fis.close();  
} catch (Exception e) {  e.printStackTrace();  
}

在这个例子中,我们使用openFileInput方法来打开一个文件输入流。然后,我们创建一个InputStreamReader和一个BufferedReader来读取文件的内容。最后,我们使用readLine方法来逐行读取文件的内容。

注意:文件都是默认存储到/data/data/package name/files/目录下。

注意:在Android 10(API级别29)及更高版本中,对于内部存储,Google开始限制可以访问的数据。你可能需要考虑使用其他策略,如使用外部存储或使用SQLite数据库。

2,sharedpreferences方式读写数据

在Android中,SharedPreferences是一个轻量级存储类,主要用于保存一些基本类型的数据,如String,Int,Boolean等。它提供了简单的读写接口,允许开发人员存储和获取数据。以下是如何使用SharedPreferences来读写数据的示例代码:

写入数据:

SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  
SharedPreferences.Editor editor = sharedPreferences.edit();  // 存储一个字符串  
editor.putString("key1", "value1");  
// 存储一个整数  
editor.putInt("key2", 123);  
// 存储一个布尔值  
editor.putBoolean("key3", true);  // 提交编辑  
editor.commit();

读取数据

SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  // 读取一个字符串  
String value1 = sharedPreferences.getString("key1", "default_value");  
// 读取一个整数  
int value2 = sharedPreferences.getInt("key2", 0);  
// 读取一个布尔值  
boolean value3 = sharedPreferences.getBoolean("key3", false);

注意:getSharedPreferences方法的第一个参数是偏好设置文件的名称,如果该名称不存在,系统将创建一个新的。第二个参数是模式,通常我们使用MODE_PRIVATE或Context.MODE_PRIVATE。如果使用MODE_WORLD_READABLE或Context.MODE_WORLD_READABLE,则从Android 4.2(API级别17)开始已经被废弃。

注意:sharedpreferences是使用键值对的方式存储数据。
默认的存储路径/data/data/package name/shared_pref/目录下。
使用xml的格式来管理数据:
在这里插入图片描述

完整的参考用例代码:
以下是在Android中使用SharedPreferences的完整参考代码用例。这个例子展示了如何使用SharedPreferences来存储和读取用户的偏好设置。

写入数据:

import android.content.SharedPreferences;  
import android.content.SharedPreferences.Editor;  
import android.content.Context;  
import android.preference.PreferenceManager;  public class MyActivity extends Activity {  private SharedPreferences sharedPreferences;  private Editor editor;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。  sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  editor = sharedPreferences.edit();  // 存储一个字符串  editor.putString("key1", "value1");  // 存储一个整数  editor.putInt("key2", 123);  // 存储一个布尔值  editor.putBoolean("key3", true);  // 提交编辑,将数据保存到SharedPreferences中。  editor.commit();  }  
}

读取数据:

import android.content.SharedPreferences;  
import android.content.SharedPreferences.Editor;  
import android.preference.PreferenceManager;  
import android.widget.TextView;  public class MyActivity extends Activity {  private SharedPreferences sharedPreferences;  private TextView textView;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  textView = findViewById(R.id.textView);  // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。  sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  // 读取一个字符串,如果找不到键,则返回默认值"default_value"  String value1 = sharedPreferences.getString("key1", "default_value");  textView.setText("Value of key1: " + value1);  // 读取一个整数,如果找不到键,则返回默认值0  int value2 = sharedPreferences.getInt("key2", 0);  textView.append("\nValue of key2: " + value2);  // 读取一个布尔值,如果找不到键,则返回默认值false  boolean value3 = sharedPreferences.getBoolean("key3", false);  textView.append("\nValue of key3: " + value3);  }  
}
http://www.lryc.cn/news/253957.html

相关文章:

  • 《当代家庭教育》期刊论文投稿发表简介
  • 【操作教程】如何将外省医保转入广州市区(医保转移接续手续办理)?
  • 【分布式系统学习】CAP原理详解
  • 【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
  • Python-炸弹人【附完整源码】
  • [英语学习][5][Word Power Made Easy]的精读与翻译优化
  • Apache Doris 详细教程(一)
  • 【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
  • win11 关闭快速启动,解决重启后部分应用没有关闭的问题
  • python爬虫-某公开数据网站实例小记
  • 还记得当初自己为什么选择计算机?
  • “数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办
  • 每天一点python——day88
  • xShell快捷键
  • OkGo导入失败解决办法
  • 02、pytest环境准备
  • 海上液化天然气 LNG 终端 ,数字孪生监控系统
  • C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构二)
  • Axios详解及运用案例
  • 期刊影响因子和期刊分区(国内-中科院/国外-JCR分区)
  • R语言gWQS包在加权分位数和回归模型的应用
  • 【Makelist】release无法生成pdb
  • 【Linux】信号的保存和捕捉
  • Sourcepawn脚本入门(二)命令与事件监听
  • java-poi操作笔记
  • PHP:js中怎么使用PHP变量,php变量为数组时的处理
  • 网工学习7-配置 GVRP 协议
  • python:格式化输出指定内容
  • 【C语言】7-35 强迫症 分数 10
  • 如何快速了解一家公司?