文件存储数据使用了java中的io操作来进行文件的保存和读取。针对文件的操作主要是以下三种:
1.创建或打开文件
2.读取文件
3.删除文件
1.通过context.openfileoutput获取输出流
<code></code>
/*
* name 打开或创建文件的名称
* mode 打开或创建文件的模式
*/
fileoutputstream openfileoutput (string name, int mode)
tip:创建的存储文件保存在/data/data/<package name>/files文件夹下
2.四种文件保存的模式
context.mode_private = 0
context.mode_world_readable = 1
context.mode_world_writeable = 2
context.mode_append = 32768
mode_private 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。
mode_world_readable 表示当前文件可以被其他应用读取。
mode_world_writeable 表示当前文件可以被其他应用写入。
mode_append 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
tip:在使用模式时,可以用"+"来选择多种模式,比如openfileoutput(filename, context.mode_private + mode_world_readable)
android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的
通过context.openfileinput获取输入流。
/*
fileinputstream openfileinput (string name)
* name 删除文件的名称
* return 成功返回true,反之false
boolean deletefile (string name)
getfilesdir()可以获取到"/data/data/<package name>/files"
getcachedir()可以获取到"/data/data/<package name>/cache"
1.操作sdcard需要的权限
<!-- 在sdcard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.mount_unmount_filesystems"/>
<!-- 往sdcard写入数据权限 -->
<uses-permission android:name="android.permission.write_external_storage"/>
2.要往sdcard存放文件,程序必须先判断手机是否装有sdcard,并且可以进行读写。可以通过getexternalstoragestate ()获得sdcard状态
返回的状态如下:
environment.media_bad_removal:bad_removal ——media remote before unmount
environment.media_checking:checking——media present(已插入) and being disk-check
environment.media_mounted:mounted——media present and mounted and can be read/write
environment.media_mounted_read_only:mounted_ro——media present and mounted and can be read
environment.media_nofs:nofs——media present but filesytem not support
environment.media_removed:removed——media not present
environment.media_shared:shared——media present and not mount. and share
environment.media_unmountable:unmountable——media present but can not mount
environment.media_unmounted:unmounted——media present but not mount
3.获取sdcard目录
* return sdcard的目录file
file getexternalstoragedirectory ()