android学习笔记(四) 数据存储技术(上)

Android系统提供了多种数据存储方法。例如,使用SharedPreferences进行简单存储、文件存储、SQLite数据库存储等。本节主要介绍使用SharedPreferences进行简单存储和文件存储。主要分为以下几部分内容:

1、测试SharedPreferences存储_保存和读取

2、测试手机内部文件存储_保存和读取

3、测试手机外部文件存储_保存和读取


一、测试SharedPreferences存储_保存和读取

Android系统提供了轻量级的数据存储方式-----SharedPreferences存储。它是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。下面就让我们一起来看一下它的具体用法吧。

1、获得SharedPreferences对象

SharedPreferences接口位于android.content包中,用于使用键值对的方式来存储数据。该类主要用于基本类型,如:boolean、float、int、long和String。在应用程序结束后,数据仍会保存。

1.1 使用getSharedPreferences()方法获取

此方法的基本语法格式如下:

getSharedPreferences(String name, int mode);

参数说明如下:

① name:用于指定SharedPreferences文件的名称,如果指定的文件不存在则会在/data/data//<package name>/shared_prefs/目录下创建一个。

②mode: 用于指定操作模式,主要又两种模式可以选择,MODE_PRIVATE 和 MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操作模式,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。MODE_MULTI_PROCESS 则一般是用于会有多个进程中对同一个 SharedPreferences 文件进行读写的情况。

1.2 使用getPreferences()方法获取

如果Activity仅需要一个SharedPreferences文件,则可以使用该方法。因为只有一个文件,所以就只有一个参数。它的语法格式如下:

getPreferences(int mode);

其中,参数mode的取值和getSharedPreferences()方法一样。

2、向SharedPreferences文件保存和读取数据

完成SharedPreferences文件中数据存储的步骤如下:

(1)获得SharedPreferences对象

sp = getSharedPreferences("sp", Context.MODE_PRIVATE);

(2)得到editor对象

Editor edit = sp.edit();

(3)使用editor保存key-value

edit.putString(key, value);

(4)提交数据

editor.commit();

读取SharedPreferences文件中存储的数据主要使用到SharedPreferences类中的getxxx方法,例如:

sp = getSharedPreferences("sp", Context.MODE_PRIVATE);
String value = sp.getString(key, null);

 

二、测试手机内部文件存储_保存和读取

内部存储位于Android手机系统地data/data/<包名>/files目录中。使用Java提供的IO流体系可以很方便地对内部数据进行读写操作。其中,FileOutputStream类的openFileOutput()方法用来打开相应的输入流,FileInputStream类的openFileInlut()方法用来打开相应的输入流。

1、保存文件

FileOutputStream类的openFileOutput()方法的基本语法格式如下:

FileOutputStream fos = openFileOutput(String name, int mode);

① name:用于指定文件名,该参数不能包含描述路径的斜杠。

② mode:用于指定访问权限,主要有如下两个取值:

    MODE_PRIVATE ,默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容。

    MODE_APPEND,表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。

openFileOutput()方法的返回值为FileOutputStream对象。

2、读取文件

FileInputStream类的openFileInput()方法的基本语法格式如下:

FileInputStream fos = openFileInput(String name);

该方法只有一个参数,用于指定文件名称,同样不可以包含描述路径的斜杠。返回值为FileInputStream对象。

 

三、测试手机外部文件存储_保存和读取

每个Android设备都支持共享的外部存储来保存数据,保存在外部存储的文件都是全局可读的,而且在用户使用USB连接电脑后,可以修改这些文件。在Android程序中,对外部存储的文件进行操作时,需要使用Environment类的getExternalStorageDirectory方法,该方法用来获取外部存储器的目录。外部存储代码如下所示:

public void save(View v) throws IOException {
		//1. 判断sd卡状态, 如果是挂载的状态才继续, 否则提示
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			//2. 读取输入的文件名/内容
			String fileName = et_of_name.getText().toString();
			String content = et_of_content.getText().toString();
			//3. 得到指定文件的OutputStream
				//1).得到sd卡下的files路径
			String filesPath = getExternalFilesDir(null).getAbsolutePath();
				//2).组成完整路径
			String filePath = filesPath+"/"+fileName;
				//3). 创建FileOutputStream
			FileOutputStream fos = new FileOutputStream(filePath);
			//4. 写数据 
			fos.write(content.getBytes("utf-8"));
			fos.close();
			//5. 提示
			Toast.makeText(this, "保存完成", 0).show();
		} else {
			Toast.makeText(this, "sd卡没有挂载", 0).show();
		}
		
	}

注意,在使用SD卡外部存储的时候要添加外部存储的读写权限,配置如下:

<!-- 操作sd卡 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值