您的位置:首页 > 移动开发 > Android开发

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

2016-01-18 21:05 495 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: