Android支持四种数据存储方式,分别是Preference, File, DataBase, Content Provider 。这几天工作上的一个测试程序要求存储一个图像文件,用了用File的这种方式,有了一点小小的心得。

先说下,Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。

在Android中通常使用File存储方式是用Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。

Context.openFileOutput(String fileName, int mode)生成的文件自动存储在/data/data/Package Name/files目录下,其全路径是/data/data/Package Name/files/fileName 。注意下,这里的参数fileName不可以包含路径分割符(如"/")。

通常来说,这种方式生成的文件只能在这个apk内访问。但这个结论是指使用Context.openFileInput(String fileName)的方式。使用这种方式,每个apk只可以访问自己的/data/data/Package Name/files目录下的文件,原因很简单,参数fileName中不可以包含路径分割符,Android会自动在/data/data/Package Name/files目录下寻找文件名为fileName的文件。

但是如果你直接使用这个File,那么这个File在其它apk中也是可以访问的,不过要注意在之前调用Context.openFileOutput(String file, int mode)时不要使用缺省的mode:MODE_PRIVATE ,而应该使用MODE_WORLD_READABLE 。使用缺省mode生成的文件的权限是“660”(也就是rw-rw----),而使用后者生成文件的权限是允许运行别的apk访问的。代码如下:

File file = new File("/data/data/Package Name/files/fileName");

另外还有一个方法可以改变这个生成文件的权限。可以直接在Java代码中执行Linux命令,毕竟Android归根到底也是Linux .代码如下:

// Process process = Runtime.getProcess().exec("chmod 666 /data/data/Package Name/files/fileName");
   //process.waitFor();

Process process = Runtime.getRuntime().exec ("ls");      
          BufferedReader   ins   =   new   BufferedReader(new  InputStreamReader(process.getInputStream()));
          String line;
          while((line = ins.readLine())!=null)  
           {  
           Toast.makeText(this, line, Toast.LENGTH_LONG).show();
           }

Android的数据存储相关推荐

  1. android SharedPreferences数据存储

    android  SharedPreferences数据存储 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存 ...

  2. 005 Android之数据存储

    文章目录 Android文件系统 Android文件的访问权限 文件访问权限实例 数据存储方式 内部存储 内部存储实例 外部存储 Shared Preferences Shared Preferenc ...

  3. android 储存方案,Android本地数据存储方案(一)

    Android系列的博客主要是记录和总结自己在平时学习之中遇到的问题,方便日后用到时查看,同时也希望对读者有所帮助.不足之处,欢迎指正~ 在说到Android数据存储之前,先提一下数据持久化,所谓数据 ...

  4. Android的数据存储之一------SharedPreferences

    下面将介绍下Android的数据存储,Android提供了5种方式存储数据: 1.SharedPreferences存储数据; 2.文件存储数据: 3.SQLite数据库存储数据: 4.使用Conte ...

  5. android常用的存储方式,Android 常见数据存储方式

    Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串.布尔值.基础数据.集合等数据.常用于存储较简单的参数设置. 2 ...

  6. Android之数据存储-刘志远-专题视频课程

    Android之数据存储-17742人已学习 课程介绍         本课程介绍了Android中几种数据存储方式,让大家对Android中的数据存储一个系统的认识 课程收益     本课程介绍了A ...

  7. android app数据存储,基于Android开发的APP数据存储研究

    谢原武+龙文 摘要: 作为一个完整的应用程序,数据存储操作是必不可少的.Android系统一共提供了四种数据存储方式分别为File文件存储.Shared Preferences存储.ContentPr ...

  8. Android常用数据存储之SharedPreferences存储和读取用法分享

    一:Android常用数据存储,一共有五种方式,分别是 1.SharedPreferences储存数据, 2.文件存储 3.SQLite数据存储 4.ContentProvider储存数据 5.网络存 ...

  9. Android的数据存储和IO - 自动朗读(TTS)

    Android的数据存储和IO - 自动朗读(TTS) 自动朗读又是Android提供的另一种另类的IO,蛮不错的哦,支持对指定文本内容进朗读,学习完这个内容我立马就让它朗读:wwj is a goo ...

  10. 【Android】数据存储,文件,数据库

    Android中数据存储 一.在内部存储读写文件 1.文件io读写 写文件 //写入数据 private fun saveFile() {//将文件写入内部存储空间时,只能在本应用的目录中写入,不能写 ...

最新文章

  1. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
  2. 【教程】Linux下MySQL 8.0安装配置
  3. 全球及中国电池行业需求前景与十四五投资规划分析报告2022-2028年版
  4. http压力测试工具
  5. python求最小公倍数_python求最大公约数和最小公倍数的简单方法
  6. react(93)--成功置空
  7. ES6解决了什么问题
  8. Android--Pin流程,飞行模式相关流程总结【工作日记一】
  9. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击 1
  10. Java —— 正则表达式
  11. 为什么都建议学java而不是python-现在学Python还是Java好呢?
  12. windows下 Mysql 错误1067 Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
  13. matlab定积分如何使用,如何用matlab计算定积分.pdf
  14. 如何模拟地震、噪音、颠簸路面激励下的不确定性振动行为?
  15. iOS Socket 客户端 基本使用
  16. python 实现 责任链模式
  17. 根据ip地址定位城市信息
  18. 非因解读 | 单细胞空间蛋白质组分析技术揭示乳腺癌循环肿瘤细胞(CTC)与肿瘤异质性及肿瘤免疫的关系
  19. 放弃有道词典和有道云笔记
  20. LAMP服务器环境搭建及工程部署

热门文章

  1. 基于nginx和uWSGI在Ubuntu系统上部署Django项目
  2. Codeforces Round #354 (Div. 2)-A
  3. 转: C语言中位运算符异或“∧”的作用
  4. springmvc学习笔记--Interceptor机制和实践
  5. mysql中关于count(*) count(id)的误区
  6. 使用ImageMagick 的提示与技巧
  7. Windows7操作系统任务栏的相关技巧
  8. jQuery Form Plugin (jquery表单插件)
  9. 实现对HDFS增删改查CRUD等操作
  10. Java 性能优化实战记录(1)---定位并分析耗cpu最多的线程