Android 文件存放路径【转】
对于应用携带的静态数据,可以放置在应用的assets目录或者res,raw目录下。
对于assets目录下的静态数据,存在当文件最大支持1MB的局限,读取方式如下:
| 1 | InputStream is = getAssets().open("xxx.xx"); |
对于res,raw目录下的文件,可以通过如下方式读取:
| 1 | InputStream is = resources.openRawResource.(R.raw.xxx); |
另外,Android还对创建缓存提供了支持,通过getCacheDir()可以获取应用的缓存路径,在系统可用空间不足时,Android会清空缓存,但对于开发者而言,不应维护过多的缓存。用户可以通过系统的设置来手动清空缓存,有人也用这个缓存来做图片的缓存,但是吧,虽然少了用了流量,但是对程序的效率来说就只是缩短了一个网络下载时间而已。开发者可以根据自己应用的特性来选择是否使用这个缓存空间。
Android支持在SD卡上的应用私有目录,在Froyo版本后,通过getExternalFilesDir()可以获得具体路径。该路径依赖与应用的包名,如果你包为hello.file那么SD开上的应用私有目录为\mnt\sdcard\Android\data\hello.file\files\.如果希望存储在SD卡上的公共目录下,可以通过getExternalStoragePublicDirectory()公共目录的具体路径视需要存储的文件类型而定。
SD上的应用需要的缓存较大,也可以在SD卡上建立缓存目录,在Froyo版本后,通过getExternalCacheDir()可以获取应用在SD卡上的缓存路径。在使用SD卡目录时,需注意SD卡是否挂载,可通过Environment.getExternalStorageState()方法进行判断,如果返回值为Envirnment.MEDIA_MOUNTED表示SD卡处于挂载状态,可以放心使用。
SQLite的中的事务处理。当需要一次性修改多个数据时,建议通过SQLite的事务处理进行批量处理,这有利于提高执行的效率。事务处理相关的方法如下:
| 1 | public void beginTransaction(); |
| 2 | public void beginTransactionWithListener(SQLiteTransactionListener transactionListener); |
| 3 | public void endTransaction(); |
| 4 | public void inTransaction(); |
| 5 | public void setTransactionSuccessful(); |
此外还有使用SharedPreferences来存储的xml文件,究其本质其实还是<key,value>值对。Android中XML文件更多的用来维护应用或者系统的配置文件,我们在开发中一般用SharedPreferences也是保存一些应用的配置信息,记录用户的某些操作,例如:用户是不是第一次进入应用,用户是否选择了保存用户名和密码和用户的某些偏好设置等等,Android根据配置信息是否对其他应用开放,SharedPreferences提供了两种权限,MODE_PRIVATE和MODE_WORLD_READABLE。该数据存放在\data\data\包.名\shared_prefs文件夹下,文件扩展名为.xml。数据以这种形式存储:
<map><boolean name="firstFlag" value="true" /></map>
获取SharedPreferences的方法:(该变量一般作为全局变量,放到Activity的OnCreate方法中初始化,我遇到有人在方法中获取不到这个变量的错误,该成全局的就获取到了。)
| 1 | SharedPreferences sp = getSharedPreferences("存储xml文件的名字",MODE_PRIVATE); |
获得数据的方法:
| 1 | String msg = sp.getString("存储的key","如果没保存则会获得的数据"); |
msg就是你保存的数据,如果没有保存,那么获得就是你后面设置的默认数据
对其编辑的方法:
| 1 | Editor editor = sp.edit(); |
| 2 | editor.putString(key, value); |
| 3 | editor.commit();//一定不要忘记提交,否则就保存不到文件中。 |
如果希望配置信息对其他应用开放, 在设置权限时,可使用 MODE_WORLD_READABLE, 其他应用要获得该配置信息时,必须先获取相应的上下文:
| 1 | context =createPackageContext("全包名",Context_CONTEXT_IGNORE_SECURITY); |
| 2 | SharedPreferences sp = context.getSharedPreferences("存储xml文件的名字",MODE_PRIVATE); |
在实际开发中,一定要对获得context进行是否为null的判断,有些时候我们打不开,或因权限不足,或因为应用已经被用户删除。
需要说明的是,在PreferenceActivity中内置了对SharedPreferences的支持。如果希望进一步了解的用户可以查看一下类似ListPreference的用法。
其次Android还提供了内部存储方式, 开发者可以将数据存储在应用的私有空间中,避免其他程序访问。其权限在Context下,有: MODE_PRIVATE,MODE_APPEND,MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE 等。内部 存储所在的目录为:/date/date/包.名/files
写入数据可读数据 也很简单:
| 1 | FileOutputStream fos = context.openFileOutput(file,Context_MODE_WORLD_WRITEABLE); |
| 2 | fos.write(bytes); |
| 3 | fos.close(); |
| 4 |
| 5 | FileInputStream fis = context.openFileInput("fileName"); |
接下来跟平常文件一样读入 就ok了。
Android获取文件夹路径 /data/data/
首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。
一、 files
1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。www.2cto.com
3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
4. Context.deleteFile(String),删除files下指定名称的文件。
二、cache
1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。
三、custom dir
getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。
Android 文件存放路径【转】的更多相关文章
- 更改Oracle数据文件名及数据文件存放路径
更改Oracle数据文件名及数据文件存放路径 SQL> select * from v$dbfile; FILE# NAME ---------- ---------------- ...
- python——在文件存放路径下自动创建文件夹!
1.a.py文件存放的路径下为(D:\Auto\eclipse\workspace\Testhtml\Test) 2.通过os.getcwd()获取的路径为:D:\Auto\eclipse\works ...
- 转:Android文件存储路径getFilesDir()与getExternalFilesDir的区别
作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard = Environment.getExternalStorageDirectory(); 获取S ...
- 更改Outlook 2013中Exchange数据文件存放路径
昨天新入职目前所在的公司,在原公司一直都是直接使用Outlook设置用户名和密码后,然后将*.pst邮件的数据文件保存在其他盘符,以防止在更新操作系统时出现邮件丢失的情况:但是目前公司使用的是Exch ...
- 查询_修改SQL Server 2005中数据库文件存放路径
1.查看当前的存放路径: select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.maste ...
- 查找mysql数据文件存放路径
show variables like 'datadir%'; show variables当前的会话,是系统参数 是静态 show global variables全局 show status是系统 ...
- crontab -e文件存放路径
crontab -e结果存放在/var/spool/cron/crontabs中
- 如何快速查看mysql数据文件存放路径?
进入mysql终端 mysql>show variables like '%datadir%'; 出来的结果即是!
- Android 文件存储浅析
最近做的一个需求和文件存储有关系.由于之前没有系统梳理过,对文件存储方面的知识一直很懵懂.趁着周末有时间,赶紧梳理一波. 这首从网上找到的一张图,很好的概括了外部存储和内部存储. 下面我们再来具体介绍 ...
随机推荐
- 【UVA】1594 Ducci Sequence(纯模拟)
题目 题目 分析 真的快疯了,中午交了一题WA了好久,最后发现最后一个数据不能加\n,于是这次学乖了,最后一组不输出\n,于是WA了好几发,最后从Udebug发现最后一组是要输出的!!! ...
- 【洛谷】P2434 [SDOI2005]区间(暴力)
题目描述 现给定n个闭区间[ai, bi],1<=i<=n.这些区间的并可以表示为一些不相交的闭区间的并.你的任务就是在这些表示方式中找出包含最少区间的方案.你的输出应该按照区间的升序排列 ...
- Firefox显示 您的链接不安全 的解决办法
Firefox浏览器,今天突然打开网页的时候提醒,“您的链接不安全”,于是网页怎么刷新都打不开.后来几经查询终于解决,下面告诉大家该如何解决这种情况. 百度经验:jingyan.baidu.com 工 ...
- 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
回调函数,这是异步编程最基本的方法. 事件监听,另一种思路是采用事件驱动模式.任务的执行不取决于代码的顺序,而取决于某个事件是否发生. 发布/订阅,上一节的"事件",完全可以理解成 ...
- TCP超时与重传机制
TCP超时与重传机制 TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制.其基本原理:在发送一个数据之后,就开启一个定时器 ...
- python学习——练习题(10)
""" 题目:暂停一秒输出,并格式化当前时间. """ import sys import time def answer1(): &quo ...
- Win7 Wifi 老断线
在cmd命令窗口 netsh wlan set autoconfig enabled=no interface="无线网络连接" 此时你再来查看Win7系统任务栏处的网络菜单中查找 ...
- java反射(Field的应用)
//$Id: DirectPropertyAccessor.java 11405 2007-04-15 12:50:34Z max.andersen@jboss.com $ package org.h ...
- 解决编译错误 implicit declaration of function 'strptime'
根据man手册,在文件中加上以下定义,应该可以去处该warning #define _XOPEN_SOURCE /* glibc2 needs this */ #inclu ...
- MongoDB系列[2]:MongoDB导入导出以及数据库备份
PS: 以下所有操作都是基于MongoDB自带的工具进行的,所以操作时一定要手动切换到Mongodb的bin目录下面,并且使用管理员权限运行命令 导出工具 mongoexport 概念: mongoD ...