Android——数据存储之File

一 、Android中文件存储的操作

1. Activity的openFileOutput()方法可以用于把数据输出到文件中

2. 创建的文件保存在/data/data/<package name>/files目录

3. 实现过程与在Java中保存数据到文件中是一样的。

File file = new File("/mnt/sdcard/xxxfile");
		if(!file.exists()){
			try {
				file.createNewFile();//如果文件不存则创建该文件
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

file.delete();//删除文件

//读写SD卡需要添加相应的权限 <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> 

 4. 获取当前应用程序的文件目录 
 ——应用程序默认的数据存储目录 

File file = this.getFilesDir();  //file.toString()结果为  /data/data/app包名/files 
File file = this.getCacheDir(); //为/data/data/app包名/cache  ,默认的缓存文件的存放位置,把一些不是非常重要的文件在此处创建使用,如果手机内存不足,系统会自动删除app的cache目录的数据
File file  = this.getDir("xxx目录名",MODE_PRIVATE); //新建目录,位于/data/data/<包名>/app_xxx目录名
File file = this.getExternalFilesDir(type); //获取外部数据存储的目录
File file = this.getExternalCacheDir(type);//获取外部缓存存储的的目录 /mnt/sdcard/Android/data/包名/cache  app卸载了,这里的数据也会被清除掉。如果开发者不把数据放在/data/data/包名、/mnt/sdcard/Android/data/包名/  卸载时不会被清除掉

5. 文件权限

 (1)MODE_PRIVATE 默认操作模式,代表该文件是私有数据,只能被应用程序本身访问,在该模式下,写入的内容会覆盖原文件的内容

 (2)MODE_APPEND  会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

 (3)MODE_WORLD_READABLE 和MODE_WORLD_WRITEABLE 用来控制其他应用程序是否有权限读写该文件

 (4)MODE_WORLD_READABLE 当前文件可被其他应用读取

6. 文件操作示例

//写文件
FileOutputStream fos =openFileOutput("a.tex",MODE_XXX+MODE_XXX);//+号设置多个权限  如果文件不存在会默认去创建
fos.write(stringObj.getBytes());
fos.close();

//读文件
FileInputStream fis = openFileInput("a.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=fis.read(buffer))!=-1 ){ //每次读1024B
   baos.write(buffer,0,len); //byte转为ByteArrayOutputStream类型
}
stringObj = baos.toString();
fis.close();
baos.close();


当app安装时系统会分配给他一个userid,当该app要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何app创建的文件、sharedPreferences、数据库都应该是私有的(位于/data/data/包名/files),其他app无法访问。除非创建时指定了MODE_WORLD_READABLE   MODE_WORLD_WRITEABLE。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值