android文件存储

三、文件存储
1.操作手机内部存储中的文件
可以使用流的方式直接操作文件
路径最好不要写死,一旦写死当修改应用包名时程序中的路径也跟着要修改
可以通过如下的方法动态获取路径:
getFilesDir
会获取/data/data/[包名]/files 目录,这个目录下存储的内容会有保障一直存在
getCacheDir
会获取/data/data/[包名]/cache 目录,这个是缓存目录,目录下存储的内容随时可能被回收,一般放置可有可无的缓存文件.虽然系统会在空间不足时帮我们回收次文件夹下的内容,但是android推荐如果程序员明确的直到这个文件夹下的文件已经不需要时,应该立即手动删除.

2.操作外部存储空间(SDCARD)中的文件:
    (1)写入sdcard需要声明权限
    (2)默认情况下读取sd卡是不需要声明权限,但是在高版本的android中在开发者选项中提供了开去读sd卡保护的选项,虽然这个选项在很多手机中是不起作用的但是部分手机是可以用的,为了防止无法读取sd卡的问题,通常我们在加上sd卡的写权限时会一起加上读取sd卡权限
    (3)/mnt/sdcard 不同的厂商生产的手机sdcard的目录可能不同,不能写死,需要通过 Environment.getExternalStorageDirectory()获取
    (4)由于sd卡是可以卸载的在操作之前最好检查sd卡是否插入并处于可操作的状态
        String stat = Environment.getExternalStorageState();
                    if(Environment.MEDIA_MOUNTED.equals(stat)){}else{}

3.android提供的读写文件的快捷方法
    FileInputStream in = Context.openFileInput(name); -- 直接操作/data/data/[包名]/files目录下的文件流
    FileOutputStream out = Context.openFileOutput(name, mode); -- 直接操作/data/data/[包名]/files目录下的文件流

    MODE_PRIVATE -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会覆盖
    MODE_APPEND -- 只有当前应用能够访问,路人无法访问,并且如果之前有这个文件,再往里写入数据,数据会追加
    MODE_WORLD_READABLE -- 当前应用能够访问这个文件,另外其他应用可以读这个文件
    MODE_WORLD_WRITEABLE --  当前应用能够访问这个文件,另外其他应用可以写这个文件

4.android内部的文件访问权限:
        android底层是linux,沿用了linux的文件权限系统
        通过十个二进制位表示文件的权限
        1位表示类型 -- 文件 文件夹 超链接
        2--4 表示当前用户对当前文件的访问权限  可读 可写 可执行
        5--7 表示当前用户组中的用户对当前文件的访问权限 可读 可写 可执行
        8--10 表示其他用户(路人)对当前文件的访问权限 可读 可写 可执行

        android中每一个应用程序都是一个用户,独占一个用户组

四、SharedPreferences –

非常便于保存键值对信息,通常用来作为程序的配置信息存储的方式,本质是一个xml文件,保存在/data/data/[包名]/shared_prefs文件夹中

案例:控制声音大小
    创建Sharedprefrence  sp = getSharedPreferences("voiceConfig", MODE_PRIVATE);
    写入数据:
        Editor editor = sp.edit();
        editor.putXXX(name, value);//编辑器以键值对形式存储数据
        editor.commit();
    读取数据:
        sp.getInt(name, defaultValue);//用键拿值,defaultValue是默认的值,当文件中没有存储的时候给键赋值

五、Xml的操作

PULL解析,android自带pull解析api,不需要导入任何包就可以用,pull解析也可以用在普通的java项目中

1.写出xml
    案例:备份用户短信
    XmlSerializer serializer = Xml.newSerializer();

!!2.读取xml
    案例:读取天气信息
    XmlPullParser parser = Xml.newPullParser();
    pull解析就像一个很懒的驴子,抽他一下走一步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值