Android数据存储与访问之文件数据存储

文件的保存与读取
文件数据存储在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。
这里我们来实现一个列子:
当点击保存按钮的时候,会将文件保存到设备中。
 1. 新建一个Android项目,编写布局文件(其中文本内容的输入框控件高度为3行文字的高度android:minLines="3"),启动模拟器查看布局,我们首先要为按钮添加单击的点击事件,打开MainActivity,实例化按钮,为按钮添加点击事件处理对象(OnClickListener类型),提供内部类实现OnClickListener接口,查找两个本文框,取得用户输入的内容;接下去就要实现本件保存,这个过程是业务操作的过程,根据MVC的设计风格,我们把业务类FileService写到业务层去,添加save(filename,filecontent)方法;利用Toast提示用户保存结果。

接下去我们编写代码实现sava()方法实现保存文件,这里用的是java中的I/O技术。

I/O技术实现文件保存:首先获得输出流对象(context.openOuput(name, mode))第一个参数是文件名称(这里不能带路径),第二个是文件的操作模式(这里我们选择的是私有操作模式context.MODE_PRIVATE),然后调用write()方法保存文件。[openFileInput()和openFileOutput()方法读取的是自带存储空间]



创建的文件默认保存在/data/data/<package name>/files目录下。大家可以打开文件资源管理器进行查看。

      2.接下去我们在业务类中编写一个方法从文件中读取数据(read(filename));

利用openFileInput(name)方法得到文件输入流对象,默认在/data/data/<package name>/files目录寻找文件

最后再从文件中读取数据。


3.引入单元测试环境(在日志pull解析xml中有介绍),编写测试方法,进行测试,并在日志控制台查看结果。



4.保存数据到SDCard中(当文件比较大的时候我们一般都将保存到外存储设备中就是SDCard中)

打开业务类,编写保存方法,这里我们不能使用openFileInput()方法(这个方法默认保存在自带存储空间); 得到要保存的文件对象new File(dirPath,name);第一个参数是sdcard在设备中的绝对路径("/mnt/sdcard"),但是我们一般采用Environment.getExternalStorageDirectory()来获得路径(因为sdcard的绝对路径可能因为版本的变化而变化,所以可能会有版本之间的兼容问题),在创建一个输出流对象进行保存文件。

这里我们还必须用到2个权限:在SDCard中创建与删除文件权限

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

在SDCard写入数据权限    

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


业务类中的代码


附:文件的操作模式

1.Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖源文件的内容;

2.Context.MODE_APPEND:该模式会检查文件是否存在,存在的话新写入的内容会追加到原文件中,否则就创建新文件,也是私有数据,只能被应用本身访问;

3.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

4.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入;

如果希望文件被其他应用读和写,可传入:Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE。

如对以上有任何疑问都可回复或留言相互讨论!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值