天天看點

android存儲方式(内部存儲、外部存儲)SharedPreferencesandroid的内部存儲(不需要權限)android的外部存儲擷取SDCard的大小(每塊的大小*塊數)測試代碼:

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