一 、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();