Android数据库文件路径问题
来源:互联网 发布:淘宝店铺推荐图拉丁 编辑:程序博客网 时间:2024/05/09 12:44
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数据库文件路径问题
- android数据库文件路径问题笔记
- 导出Android数据库文件问题
- android读取sd卡数据库文件相关问题
- 关于CppSqlite中数据库文件中文路径识别问题的解决方法
- sqlite打开路径含中文的数据库文件失败的问题
- 修改数据库文件的路径
- 拷贝数据库文件到路径
- 关于android安卓的静态数据库文件的存取问题
- 更改Google Desktop数据库文件路径
- sqlserver数据库文件默认系统路径
- 关于CppSqlite中数据库文件中文路径识别问题的解决法
- MYSQL数据库文件权限问题
- 可视化操作android数据库文件
- Android 拷贝数据库文件
- 可视化操作android数据库文件
- android如何使用数据库文件?
- Android数据库文件的导出
- ERROR - ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- android 静音与振动
- 气候挺爽
- flex项目更改之后却运行原来的项目,清除缓存!
- 11111111111111111111
- Android数据库文件路径问题
- 迷宫3--快速求解任意两点之间一条路,并不是最短(dfs)
- ASCII编码->7Bit编码
- Windows Balloon Message
- (转)c++标准库——list容器
- 局域网无法访问工作组问题
- 网上邻居看不到目标主机
- sendmail发送失败问题
- 2011百度之星B第一题