android 默认存储路径在哪里找,Android 文件存放路径和读取方式

getExternalFilesDir();Environment.getExternalStorageState()

对于应用携带的静态数据,可以放置在应用的assets目录或者res,raw目录下。

对于assets目录下的静态数据,存在当文件最大支持1MB的局限,读取方式如下:

InputStream is = getAssets().open("xxx.xx");

对于res,raw目录下的文件,可以通过如下方式读取:

InputStreamis=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的事务处理进行批量处理,这有利于提高执行的效率。事务处理相关的方法如下:

publicvoidbeginTransaction();

publicvoidbeginTransactionWithListener(SQLiteTransactionListener transactionListener);

publicvoidendTransaction();

publicvoidinTransaction();

publicvoidsetTransactionSuccessful();

此外还有使用SharedPreferences来存储的xml文件,究其本质其实还是值对。Android中XML文件更多的用来维护应用或者系统的配置文件,我们在开发中一般用SharedPreferences也是保存一些应用的配置信息,记录用户的某些操作,例如:用户是不是第一次进入应用,用户是否选择了保存用户名和密码和用户的某些偏好设置等等,Android根据配置信息是否对其他应用开放,SharedPreferences提供了两种权限,MODE_PRIVATE和MODE_WORLD_READABLE。该数据存放在\data\data\包.名\shared_prefs文件夹下,文件扩展名为.xml。数据以这种形式存储:

获取SharedPreferences的方法:(该变量一般作为全局变量,放到Activity的OnCreate方法中初始化,我遇到有人在方法中获取不到这个变量的错误,该成全局的就获取到了。)

SharedPreferencessp=getSharedPreferences("存储xml文件的名字",MODE_PRIVATE);

Stringmsg=sp.getString("存储的key","如果没保存则会获得的数据");

msg就是你保存的数据,如果没有保存,那么获得就是你后面设置的默认数据

对其编辑的方法:

Editoreditor=sp.edit();

editor.putString(key, value);

editor.commit();//一定不要忘记提交,否则就保存不到文件中。

如果希望配置信息对其他应用开放,在设置权限时,可使用 MODE_WORLD_READABLE,其他应用要获得该配置信息时,必须先获取相应的上下文:

context=createPackageContext("全包名",Context_CONTEXT_IGNORE_SECURITY);

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

写入数据可读数据 也很简单:

FileOutputStreamfos=context.openFileOutput(file,Context_MODE_WORLD_WRITEABLE);

fos.write(bytes);

fos.close();

FileInputStream fis=context.openFileInput("fileName");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值