天天看点

Android数据储存——文件储存

文件存储数据使用了java中的io操作来进行文件的保存和读取。针对文件的操作主要是以下三种:

1.创建或打开文件

2.读取文件

3.删除文件

1.通过context.openfileoutput获取输出流

<code></code>

     /*

     * name 打开或创建文件的名称

     * mode 打开或创建文件的模式

     */

    fileoutputstream openfileoutput (string name, int mode)

tip:创建的存储文件保存在/data/data/&lt;package name&gt;/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/&lt;package name&gt;/files"

getcachedir()可以获取到"/data/data/&lt;package name&gt;/cache"

1.操作sdcard需要的权限

    &lt;!-- 在sdcard中创建与删除文件权限 --&gt;

    &lt;uses-permission android:name="android.permission.mount_unmount_filesystems"/&gt;

    &lt;!-- 往sdcard写入数据权限 --&gt;

    &lt;uses-permission android:name="android.permission.write_external_storage"/&gt; 

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 ()