天天看点

Android基础之数据存储

Android基础之数据存储(等待更新…)

1数据存储方式:

文件存储:最为常用,与Java中的I/O完全一样,可存储文本、图片、音频等。

SharedPreferences:存储一些简单配置,xml格式存储。

SQLite数据库:系统自带轻量级数据库,支持SQL。

ContentProvider:应用程序之间的数据交换。

网络存储:将数据存储在服务器上。

1.1文件存储(分为内部存储、外部存储两种。)

  • 内部存储:文件存储在设备内部,为应用程序私有,当卸载应用程序时随之删除,其他程序访问此文件时需要提供权限。
将数据存储到指定文件:

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

其中:

name

是文件名,

mode

是文件操作模式。

mode

的4种取值模式:

MODE_PRIVATE

只能被当前应用程序读写、

MODE_APPEND

文件内容可以追加、

MODE_wORLD_READABLE

可被其他应用程序读、

MODE_WORLD_WRITEABLE

可被其他应用程序写。

#2 fos.write(content.getBytes());

#3 fos.close();

读取指定文件的数据:

#1 FileInpuStream fis=openFileInput(String name);

其中:

name

是文件名。

#2 byte[] buffer=new byte[fis.available()];

其中

fis.available()

用于获取文件长度。

#3 fis.read(buffer);

#4 content=new String(buffer);

#5 fis.close();

  • 外部存储:文件存储在SD或者内嵌存储卡中,为其他应用程序共享,并且可以被浏览、修改、删除。存储方式不安全。
#1 获取外部存储设备的状态
String state=Environment.getExternalStorageState();
#2 判断是否可用,若可用则读取数据
if (state.equals(Environment.MEDIA_MOUNTED)){
	File SDPath=Environment.getExternalStorageDirectory();//获取SD卡目录
	File file=new File(SDPath,'data.txt');
	//存储数据
	FileOutputStream fos;
	String data="Hello World";
	try{
		fos=new FileOutputStream(file);
		fos.write(data.getBytes());
		fos.close();
	}catch(Exception e){
		e.printStackTrace();
	}
	//读取数据
	FileInputStream fis;
	try{
		fis=new FileInputStream(file);
		BufferedReader br=new BufferedReader(new InputStreamReader(fis));
		String data=br.readLine();
	}catch (Exception e){
		e.printStackTrance();
	}
 }
           

由于操作SD卡中的数据这一行为需要符合系统安全性,因此需要在清单文件中添加SD卡读写权限。

android.permission.WRITE_EXTERNAL_STORAGE

android.permission.READ_EXTERNAL_STORAGE