android 读写文件总结

http://www.androidlearner.net/tag/%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99


Android有一套自己的安全模型,具体可参见Android开发文档。当应用程序(.apk)在安装时就会分配一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。

默认情况下,任何应用创建的文件,数据库,sharedpreferences都应该是私有的(位于/data/data/包名/files/),其余程序无法访问。除非在创建时指明是MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE,只要这样其余程序才能正确访问。因为有这种Android读写文件的方法在安全上有所保障,进程打开文件时Android要求检查进程的userid。所以不能直接用java的api来打开,因为java的io函数没有提这个机制 。

同时android不支持读取与工程直接子级的文件。解决办法是:在res文件夹下新建raw文件夹,或者在assets目录下,然后将文件test.xml复制到raw文件夹下。

1、必须用Andorid提供的API打开程序私有的数据,默认路径为/data/data/包名/
读写文件目录:

1
2
3
FileInputStream fis = mContext.openFileInput(fileName); //读取
//写入,若不存在则创建
  FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE);

读写缓存目录:getCacheDir()
读取数据库目录:

2、sdcard中读写非私有文件和数据使用java提供的API,需要在manifest.xml中增加权限:

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

Android2.2之前,目录路径为/sdcard;2.2版本及之后,路径为/mnt/sdcard/
读写之前,需要判断是否有sdcard:
Environment.getExternalStorageState()

3、res/raw目录下读取资源文件,不可写入

1
InputStream is = mContext.getResources().openRawResource(R.raw.test);

4、assets目录下读取资源文件,不可写入

1
InputStream is = mContext.getAssets().open(fileName);

参考文章:

1、Android私有文件资源文件的存取 

2、Android读写文件正确实行方法介绍 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值