android存储方式(内部存储、外部存储)
2016-01-18 21:05
495 查看
android中的文件存储分为SharedPreferences内部存储、外部存储、数据库存储
通过Activity的Context对象获取
SharedPreferences对象的获取 getSharedPreferences("文件名",模式); 得到文件名:文件名xml
通过Activity的Context获取
SharedPreferences对象获取 getPreferences(模式); 得到文件名: XXXActivity.xml
同PreferenceManager
SharedPreferences对象的获取 preferenceManager.getDefaultSharedPreferences(上下文); 得到packageName_prefer
写入数据
sharedPreferences对象的edit()方法得到editor对象,
使用editor的putXXX(key,value);
editoe对象的commit提交数据
读取数据
sharedPreference对象的getXXX()
/data/data/packageName/cache android api获取路径的方式context.getCacheDir()
内部存储的files目录 /data/data/packageName/files android api获取路径的方式context.getFilesDir();
内部存储的data目录 /data android api获取路径的方式Environment.getDataDirectory();
外部存储的files目录 /storage/sdcard0/Android/data/packageName/files android api获取路径的方式context.getExternalFilesDir()
外部存储的sdcard的根目录/storage/sdcard0/ android api获取路径的方式Environemnt.getExternalStorageDirectory()
外部存储的九大目录 /storage/sdcard0/Alarms android api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS);
/storage/sdcard0/DCIMandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
/storage/sdcard0/Downloadandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
/storage/sdcard0/Movicesandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVICES);
/storage/sdcard0/Musicandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
/storage/sdcard0/Notificationsandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS);
/storage/sdcard0/Picturesandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
/storage/sdcard0/Podcastsandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS);
/storage/sdcard0/Ringtones
android api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES);
long blockSize = sf.getBlockSize(); //方法过时,在4.3以上的手机可以用getBlockSizeLong();代替
//总的块的个数
long blockCount=sf.getBlockCount(); //方法过时,在4.3以上的手机可以用getBlockBlockCountLong();代替
//可用的块的个数
long availableCount=sf.getAvailableBlocks(); //方法过时,在4.3以上的手机可以用getAvailableBlocksLong();代替
//空闲块的个数(包括预留的一般程序无法使用的块)
long freeCount=sf.getFreeBlocks(); //方法过时,在4.3以上的手机可以用getFreeBlocksLong();代替
总的大小:blockSize*blockCount/1024/1024 MB
可用大小:blockSize*availableCount/1024/1024 MB
已用空间大小: 总的大小-可用空间
SharedPreferences
sharedPreferences在使用时有三种方式通过Activity的Context对象获取
SharedPreferences对象的获取 getSharedPreferences("文件名",模式); 得到文件名:文件名xml
通过Activity的Context获取
SharedPreferences对象获取 getPreferences(模式); 得到文件名: XXXActivity.xml
同PreferenceManager
SharedPreferences对象的获取 preferenceManager.getDefaultSharedPreferences(上下文); 得到packageName_prefer
写入数据
sharedPreferences对象的edit()方法得到editor对象,
使用editor的putXXX(key,value);
editoe对象的commit提交数据
读取数据
sharedPreference对象的getXXX()
android的内部存储(不需要权限)
内部存储的cache目录/data/data/packageName/cache android api获取路径的方式context.getCacheDir()
内部存储的files目录 /data/data/packageName/files android api获取路径的方式context.getFilesDir();
内部存储的data目录 /data android api获取路径的方式Environment.getDataDirectory();
android的外部存储
外部存储的cache目录/storage/sdcard0/Android/data/packageName/cache android api获取路径的方发context.getExternalCacheDir()外部存储的files目录 /storage/sdcard0/Android/data/packageName/files android api获取路径的方式context.getExternalFilesDir()
外部存储的sdcard的根目录/storage/sdcard0/ android api获取路径的方式Environemnt.getExternalStorageDirectory()
外部存储的九大目录 /storage/sdcard0/Alarms android api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS);
/storage/sdcard0/DCIMandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
/storage/sdcard0/Downloadandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
/storage/sdcard0/Movicesandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVICES);
/storage/sdcard0/Musicandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
/storage/sdcard0/Notificationsandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS);
/storage/sdcard0/Picturesandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
/storage/sdcard0/Podcastsandroid api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS);
/storage/sdcard0/Ringtones
android api获取路径的方式Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES);
获取SDCard的大小(每块的大小*块数)
//每块的大小long blockSize = sf.getBlockSize(); //方法过时,在4.3以上的手机可以用getBlockSizeLong();代替
//总的块的个数
long blockCount=sf.getBlockCount(); //方法过时,在4.3以上的手机可以用getBlockBlockCountLong();代替
//可用的块的个数
long availableCount=sf.getAvailableBlocks(); //方法过时,在4.3以上的手机可以用getAvailableBlocksLong();代替
//空闲块的个数(包括预留的一般程序无法使用的块)
long freeCount=sf.getFreeBlocks(); //方法过时,在4.3以上的手机可以用getFreeBlocksLong();代替
总的大小:blockSize*blockCount/1024/1024 MB
可用大小:blockSize*availableCount/1024/1024 MB
已用空间大小: 总的大小-可用空间
测试代码:
Log.i("123", this.getCacheDir().getPath()); Log.i("123", this.getFilesDir().getPath()); Log.i("123", Environment.getDataDirectory().getPath()); //Log.i("123", Environment.getRootDirectory().getPath()); Log.i("123", this.getExternalCacheDir().getPath()); Log.i("123", this.getExternalFilesDir(null).getPath()); Log.i("123", Environment.getExternalStorageDirectory().getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS).getPath()); Log.i("123", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES).getPath()); StatFs sf=new StatFs(Environment.getExternalStorageDirectory().getPath()); //每块的大小 long blockSize = sf.getBlockSize(); //总的块的个数 long blockCount=sf.getBlockCount(); //可用的块的个数 long availableCount=sf.getAvailableBlocks(); //空闲块的个数 long freeCount=sf.getFreeBlocks(); Log.i("123", "总的大小"+(blockSize*blockCount/1024/1024)); Log.i("123", "可用大小"+(blockSize*availableCount/1024/1024)); Log.i("123", "已用的大小"+((blockSize*blockCount)-(blockSize*availableCount))/1024/1024);
相关文章推荐
- Android笔记--对缓存、三级缓存和Android的Dalvik虚拟机和java编译过程的理解
- Android广播机制完美讲解
- android142 360 分页加载
- android学习日记(十一):DrawLayout高仿QQ5.2双向侧滑效果
- android从零单排之设置圆边按钮
- Activity启动流程分析(基于android 5.1)
- Android工程目录结构及基本常用框架
- Android笔记--layout_gravity和gravity,src和background,fragment和fragmentactivity的理解
- android把view设置成透明
- 通过addDataScheme("file") 浅析android事件过滤策略
- 在Android中显示gif图片
- 关于Android studio混淆遇到的问题
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
- Andorid开发——ListView
- MTK Android手机进程列表
- Android 中编译版本,最小版本, 目标版本都有什么区别?
- Android 调整工作方式 改善耗电问题 <15>
- 【Android源码-PMS】(二)ComponentInfo类
- Android 异常解决 content.ActivityNotFoundException: Unable to find explicit activity class
- Androidclient和server端数据交互的第一种方法