首页 > 代码库 > Android数据储存——文件储存

Android数据储存——文件储存

文件存储数据使用了Java中的IO操作来进行文件的保存和读取。针对文件的操作主要是以下三种:
1.创建或打开文件
2.读取文件
3.删除文件

创建文件:

1.通过Context.openFileOutput获取输出流
     /*
     * 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获取输入流。
    /*
     * name 打开或创建文件的名称
     */

    FileInputStream openFileInput (String name)

删除文件:

    /*
     * name 删除文件的名称
     * return 成功返回true,反之false
     */

    boolean deleteFile (String name)

获取文件路径的方法:

getFilesDir()可以获取到"/data/data/<package name>/files"
getCacheDir()可以获取到"/data/data/<package name>/cache"

把文件存入SDCard

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


Android数据储存——文件储存