android存储方式(内部存储、外部存储)

android中的文件存储分为SharedPreferences内部存储、外部存储、数据库存储

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值