Android之数据存储

本文详细介绍了Android平台上的数据存储方式,包括SharedPreferences用于存储配置信息,内部文件系统保存较大数据或图片,以及SQLite数据库用于结构化数据的存储。文中还涉及到SD卡的读写操作和SQLite数据库的使用,包括数据类型、事务管理和查询方法。
摘要由CSDN通过智能技术生成

一,sp存储

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。

它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。

其存储位置在/data/data/<包名>/shared_prefs目录下。

SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。

SharedPreferences: 对应sp文件的接口
context. getSharedPreferences (String name, int mode): 得到SP对象
name: 文件名(不带.xml)
mode: 生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit() : 得到Editor对象
Xxx sp.getXxx(name,defaultValue): 根据name得到对应的数据
Editor : 能更新sp文件的接口
 Editor put(name, value) : 保存一个键值对, 没有真正保存到文件中
Editor remove(name)
commit(): 提交, 数据真正保存到文件中了

1.sp存储的保存数据

public void save(View v) {
		//2.得到Editor对象
		Editor edit=sp.edit();
		//3.得到输入的key/value
		String key = et_sp_key.getText().toString();
		String value = et_sp_value.getText().toString();
		//4.使用Editor保存key-value
		edit.putString(key, value).commit();
		//5.提示
		Toast.makeText(this, "保存完成", 0).show();
	}
2.sp存储的读取数据

	public void read(View v) {
		//1.得到输入的key
		String key = et_sp_key.getText().toString();
		//2.根据key读取对应的value
		String value = sp.getString(key, null);
		//3.显示
		if(value==null){
			Toast.makeText(this, "没有找到对应的value", 0).show();
		}else{
			et_sp_value.setText(value);
		}
	}
二,手机内部文件存储

应用运行需要的一些较大的数据或图片可以用文件保存的手机内部
文件类型: 任意
数据保存的路径: /data/data/projectPackage/files/
可以设置数据只能是当前应用读取, 而别的应用不可以
应用卸载时会删除此数据

读取文件:FileInputStream fis = openFileInput("logo.png");
保存文件:FileOutputStream fos = openFileOutput("logo.png", MODE_PRIVATE)
得到files文件夹对象:File filesDir = getFilesDir();  
操作asserts下的文件
得到AssetManager : context.getAssets();
读取文件: InputStream open(filename);
加载图片文件:Bitmap BitmapFactory.decodeFile(String pathName)   // .bmp/.png/.jpg
1.保存数据:

	public void save(View v) throws IOException {
		//1.得到InputStream-->读取assets下的logo.png
			//得到AssetManager
		AssetManager manager = getAssets();
		//读取文件
		InputStream is = manager.open("logo.png");
		//2.得到OutputStream-->/data/data/packageName/files/logo.png
		FileOutputStream fos = openFileOutput("logo.png", Context.MODE_PRIVATE);
		//3.边读边写
		byte[] buffer=new byte[1024];
		int len = -1;
		while((len = is.read(buffer))!=-1){
			fos.write(buffer,0,len);
		}
		fos.close();
		is.close();
		
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值