Android—文件进行数据存储(四中操作模式)
2013-11-14 01:40
579 查看
简介:
Android进行文件存储主要有四种操作模式1》Context.MODE_PRIVATE:默认模式,私有模式只能被本身应用进行访问,其它应用不能进行访问,本身应用访问文件,如果进行操作会对文件进行覆盖。
2》Context.MODE_APPEND:append模式下对文件访问会自动检查文件是否存在,会追加内容,如果文件不存在则进行创建文件。
3》MODE_WORLD_WRITEABLE:表示可以被其它应用对data\data\下的文件进行写,但不能进行读。
4》MODE_WORLD_READABLE:表示可以被其它应用对data\data\下的文件进行读,但不能进行写。
如何想读写:MODE_WORLD_WRITEABLE+MODE_WORLD_READEABLE
代码来了解四种操作模式:
提取方法:private void fileWrite(String content, FileOutputStream fos) throws IOException { fos.write(content.getBytes()); fos.close(); }
工具类:
public class IOUtil { public static String read(File file) throws Exception{ FileInputStream fis=new FileInputStream(file); ByteArrayOutputStream outStream=new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int len=0; while((len=fis.read(buff))!=-1){ outStream.write(buff, 0, len); } fis.close(); outStream.close(); return new String(outStream.toByteArray()); } }
1》我们先了解下Contex.MODE_PRIVATE
// 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容 // 会覆盖原文件的内容 FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE); fileWrite(content, fos);本身应用时可以访问的,其它应用不能访问。
2》Context.MODE_APPEND
File项目下: // 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容 // 会覆盖原文件的内容 FileOutputStream fos = context.openFileOutput(filename, Context.MODE_APPEND); fileWrite(content, fos);
Other项目下: String path="/data/data/com.example.file/files/Append.txt"; File file=new File(path); String content=IOUtil.read(file); Log.i(TAG,content);
抛出异常:java.io.FileNotFoundException:/data/data/com.example.file/files/Append.txt(Permission denied)
很明显权限不够
android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其它资源比如文件的时候,就需要userid匹配.
3》MODE_WORLD_WRITEABLE
File项目下 public void testWorld_writeable() throws Exception { FileService service = new FileService(this.getContext()); service.saveWorld_writeable("World_writeable.txt", "www.World_writeable.net"); }
Other项目下 public void readWrite() throws Exception { String path="/data/data/com.example.file/files/World_writeable.txt"; File file=new File(path); FileOutputStream fos=new FileOutputStream(file); fos.write("itcast".getBytes()); fos.close(); }
4》MODE_WORLD_READABLE
File项目下 public void saveWorld_readable(String filename, String content) throws Exception { // 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容 // 会覆盖原文件的内容 FileOutputStream fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE); fileWrite(content, fos); }
Other项目下 public void readRead() throws Exception { String path="/data/data/com.example.file/files/World_readable.txt"; File file=new File(path); String content=IOUtil.read(file); Log.i(TAG,content); }
可读可写:
MODE_WORLD_WRITEABLE+MODE_WORLD_READEABLE
File项目下 public void saveReadAndWrite(String filename, String content) throws Exception { FileOutputStream fos = context.openFileOutput(filename, Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); fileWrite(content, fos); }
Other项目下 public void readWriteRead() throws Exception { String path="/data/data/com.example.file/files/writeRead.txt"; File file=new File(path); String content=IOUtil.read(file); Log.i(TAG,content); FileOutputStream fos=new FileOutputStream(file); fos.write("itcast".getBytes()); fos.close(); }
相关文章推荐
- Android 应用开发 之使用LruCache和DiskLruCache来在内存和SD卡中缓存图片
- Android 4.4 Kitkat 编译时对于存储器挂载方式的修改,以泛泰820,860为例
- HDR照片算法去抖动
- 研究一下Android滑屏的功能的原理,及scrollTo和scrollBy两个方法
- android view画图笔记
- 使用excel批量创建android联系人
- Android Animation总结
- android adb启动失败问题 adb server is out of date. killing... ADB server didn't ACK * failed to start daem
- android 很多应用中用到的 listView + viewPager
- Android开发群
- Android Dialog里的EdiText为何不自动弹出输入法
- 【Android】性能优化的一些方法
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- android图片切换ImageSwichter的动画切换效果
- Android数据存储访问——文件存储
- Android之复选框对话框
- android触屏事件处理总结--dispatchTouchEvent
- onInterceptTouchEvent和onTouchEvent调用时序
- Android应用的tab切换效果
- Android Create Menu的二级子菜单