安卓存储基本用法之SharedPreferences和内部外部存储

本文介绍了安卓应用中常用的存储方式,包括SharedPreferences的保存和获取步骤,以及内部存储和外部存储的使用方法。对于SharedPreferences,详细阐述了如何创建、编辑和确认键值对,并提示在程序启动时可初始化数据。对于内部存储,讲解了写入和读取数据的流程。外部存储则强调了需要额外的写入权限,并提供了相应的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharedPreferences存储

1.创建sharedPreferences对象调用getSharedPreferences()函数

2.实例化SharedPreferences.Editor对象。

3.输入键值对

4.确认。

 程序启动时,想要初始化数据,应重载onStart()函数。

代码:

保存

	//为了方便,自成一函数
	public void savingSharedPreferences() {
		SharedPreferences preferences = getSharedPreferences("people",
				MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE);
		SharedPreferences.Editor editor = preferences.edit();
		editor.putString("name", "小强");
		editor.commit();
	}

获取

	public void loadingSharedPreferences() {
		SharedPreferences preferences = getSharedPreferences("people",
				MODE_WORLD_READABLE);
		String msgString = preferences.getString("name", null);
		view.setText(msgString);

	}


内部存储

存:

1.创建FileOutStream 对象获取openFileOutput()函数

2.写入数据。

1.创建FileInStream对象获取openFileOutput()函数

2.定义一比特字节流byte[] reader=new byte[fis.available]

3.while(fis.read(reader))判断是否读取完毕,创建String对象来保存数据。
 

	public void SavinginStore() {
		String string1 = "this is a test \n and is another";
		try {
			FileOutputStream fos = openFileOutput("people.txt",
					MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE);//注意权限,第二个参数、
			fos.write(string1.getBytes());  //需要将String变量转换为btye类型
			fos.flush();
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public void loadinginStore() {
		try {
			FileInputStream fis = openFileInput("people.txt");
			byte[] reader = new byte[fis.available()];
			
			String msgString = null;
			while (fis.read(reader) != -1) {
				msgString = new String(reader);
			}
			view.setText(msgString);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}



 外部存储

外部存储跟内部存储差不多(个人觉得),只是在创建FileInStream和FileOutStream对象时有些不同,而且有时需要判断外部存储卡是否存在可写(还没有体会此好处)。

关键的是外部存储需要获取写入权限。在AndroidManifast.xml中申请。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

代码(FILENAME为一String变量,myData也是String变量)

	public void savingoutStore() {

		try {

			FileOutputStream fos = new FileOutputStream(
					Environment.getExternalStorageDirectory() + "/" + FILENAME);
			fos.write(myData.getBytes());
		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public void loadingoutstore() {

		String msg = null;
		try {
			FileInputStream fis = new FileInputStream(
					Environment.getExternalStorageDirectory() + "/" + FILENAME);
			byte[] reader = new byte[fis.available()];
			while (fis.read(reader) != -1) {
				msg = new String(reader);
			}
			view.setText(msg);
		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}


 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值