`
duoerbasilu
  • 浏览: 1482399 次
文章分类
社区版块
存档分类
最新评论

Android数据库文件路径问题

 
阅读更多

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

分享到:
评论

相关推荐

    在android studio中用SQLiteOpenHelper()方法建立数据库

    今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...

    微信数据库解密工具 EnMicroMsg Decrypt 20200620

    微信数据库 EnMicroMsg.db 解密工具 EnMicroMsg_Decrypt 20200620 Android版微信的数据库是加密了的...bugfix:修复旧版本无法打开中文路径内数据库文件问题。 bugfix:修复旧版本因系统缺少libeay32.dll无法运行的问题。

    读写Android中assets目录下的文件的方法详解

    主要介绍了读写Android中assets目录下的文件的方法详解,assets和res/raw工程目录下都可以放一些文件,这些文件将被打包到APK中应用使用,需要的朋友可以参考下

    Android 数据库SQLite 写入SD卡的方法

    1.在你的helper类中把数据库文件名称 DATABASE_NAME 由原来的一个文件名,修改成路径的形式。 修改前:DATABASE_NAME = “demo.db” public class MyDBHelper extends SQLiteOpenHelper { public static final ...

    Android操作存放在assets文件夹下SQLite数据库的方法

    因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面。一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机自身的存储上之后再...

    安卓文件存储:数据库Demo

    http://blog.csdn.net/charein/article/details/12676805 文章的工程文件,导入eclipse即可。

    Android开发连接sqlite并通过SQLiteStudio实时读取数据库

    最近进行毕业设计的时候,用到了android开发连接数据库这一块, 之前每次都是这么使用它的 先访问安卓项目的数据库路径data/data/项目/databases 然后把对应的db文件拷出来 再在SQLiteStudio中去使用 每次查询对...

    毕业设计-基于Android的旅游攻略app+源代码+文档说明+数据库sql

    毕业设计—基于Android的旅游攻略app - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均...数据库文件在后端代码中,路径为:Graduatio

    Android利用LitePal操作数据库存取图片

    Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很...

    基于用户推荐的android阅读器服务端

    基于用户推荐的android阅读器... mreader.sql是对应除书的表格外其他表格建立的数据库文件;manage.py 是用mysqldb让数据库与python相连的文件; test.py是服务端主代码。ReaderPhantom.apk 是最终展示的android成品;

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Android高薪之路:Android程序员面试宝典 李宁

    1 1 关于Android的非技术问题 1 1 1 为什么看好 Android 1 1 2 以前是否从事过Android的工作 做过哪些工作 1 1 3 你做的最复杂的界面是什么 1 1 4 如何解决Android学习中遇到的难题 1 1 5 Android只能在手机或其他...

    android图片文件的路径地址与Uri的相互转换方法

    一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢? 其实很简单,直接上代码: public static String ...

    三星“S备忘录”按T输入的文字保存路径及备份方法(内含数据读取工具

    首先要ROOT,用RootExplorerl打开文件夹/dbdata/databases/com.sec.android.app.memo/memo.db ,找到此文件,DB是数据库文件,备份出来,再安装xplore_3.63.00.apk这个软件,就可以打开这个文件了。会看到你所有的备忘...

    安卓Android精品课程在线学习系统app+源代码+文档说明+数据库.zip

    视频信息: 记录编号,视频资料标题,所属章,文件路径,添加时间 习题信息: 记录编号,习题名称,所在章,练习内容,加入时间 在线问答: 记录编号,提问的老师,提问者,提问内容,回复内容,提问时间 作业任务: 记录编号,老师...

    Android中Uri和Path之间的转换的示例代码

    媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回。 其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。 Media Uri To Path 在我...

    安卓Android精品课程在线学习系统app设计毕业源码案例设计

    安卓Android精品课程在线学习系统app设计 系统开发环境: Windows + Myclipse(服务器端) + ...课件信息: 记录编号,课件标题,文件路径,添加时间 章信息: 记录编号,章标题,添加时间 视频信息: 记录编号,视频资料标题,所

    Android 常用六大框架

    (1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。 (2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。 (3) 网络模块:...

    安卓Android精品课程在线学习系统app设计

    系统开发环境: Windows + Myclipse(服务器端) + Eclipse(手机客户端) + mysql数据库 服务器也可以用Eclipse或者idea等工具,客户端...视频信息: 记录编号,视频资料标题,所属章,文件路径,添加时间 习题信息: 记录编号,

Global site tag (gtag.js) - Google Analytics