真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android之獲取手機內(nèi)部及sdcard存儲空間的方法

知識點:

為廣漢等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及廣漢網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、做網(wǎng)站、廣漢網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

內(nèi)部存儲空間獲取總大小和可用大??;

sdcard存儲空間獲取總大小和可用大??;

新名詞記錄{StatFs:描述文件系統(tǒng)信息的類}

概覽

在開發(fā)中,我們或多或少都會用到存儲空間進(jìn)行存儲數(shù)據(jù)。移動設(shè)備上可以有兩種的存儲方式:手機內(nèi)部空間和sdcard外部空間。對于要使用存儲空間,要使用哪一個?如何判斷是否有足夠的空間?sdcard是否掛載?等等諸多問題就來了。

對于設(shè)備內(nèi)部存儲空間來說,是一定會存在的。如果使用內(nèi)部存儲空間,我們需要做的是判斷內(nèi)部存儲空間是否有足夠大的可用空間給我們使用。現(xiàn)在的移動設(shè)備,手機廠商已經(jīng)將內(nèi)部存儲做得很大很大了,一般來說用戶都足夠用了。

對于sdcard,這個是用戶外部選擇性的進(jìn)行存儲空間擴(kuò)展的,事實上不一定會有sdcard。尤其是在現(xiàn)在Android移動設(shè)備廠商提供的內(nèi)部存儲空間越來越大,起步的已經(jīng)都是32G了,更大的可以去到128G,所以用戶可能就不需要再進(jìn)行sdcard的擴(kuò)展了。但是,設(shè)備內(nèi)部存儲空間小,需要用到外部存儲空間的情況還是可能會出現(xiàn)的。而且可以知道主流的APP對于一些非私密的數(shù)據(jù),例如圖片,歌曲以及下載的更新包等,都會選擇放置在sdcard里,以減少占用內(nèi)部存儲空間。

說了這么多,我們還是有必要對上面兩種存儲空間的使用作一個說明,如何獲取存儲空間是否可用,可用空間是否足夠大等問題。

內(nèi)部存儲空間

我們知道,存儲硬件的空間是按著區(qū)塊來劃分的,每個區(qū)塊有固定的大小。存儲設(shè)備的總大小=區(qū)塊大小*區(qū)塊數(shù)量。通過StatFs類,我們可以獲取到總的區(qū)塊,可用區(qū)塊和每個區(qū)塊的字節(jié)大小等信息。

具體看代碼:

/**
   * 獲取手機內(nèi)部空間總大小
   *
   * @return 大小,字節(jié)為單位
   */
  static public long getTotalInternalMemorySize() {
    //獲取內(nèi)部存儲根目錄
    File path = Environment.getDataDirectory();
    //系統(tǒng)的空間描述類
    StatFs stat = new StatFs(path.getPath());
    //每個區(qū)塊占字節(jié)數(shù)
    long blockSize = stat.getBlockSize();
    //區(qū)塊總數(shù)
    long totalBlocks = stat.getBlockCount();
    return totalBlocks * blockSize;
  }

  /**
   * 獲取手機內(nèi)部可用空間大小
   *
   * @return 大小,字節(jié)為單位
   */
  static public long getAvailableInternalMemorySize() {
    File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());
    long blockSize = stat.getBlockSize();
    //獲取可用區(qū)塊數(shù)量
    long availableBlocks = stat.getAvailableBlocks();
    return availableBlocks * blockSize;
  }

用以上兩個方法,就可以獲得內(nèi)部存儲空間總大小和可用大小了。

sdcard外部存儲空間

  /**
   * 判斷SD卡是否可用
   *
   * @return true : 可用
false : 不可用 */ public static boolean isSDCardEnable() { return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } /** * 獲取手機外部總空間大小 * * @return 總大小,字節(jié)為單位 */ static public long getTotalExternalMemorySize() { if (isSDCardEnable()) { //獲取SDCard根目錄 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } else { return -1; } } /** * 獲取SD卡剩余空間 * * @return SD卡剩余空間 */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) public static String getFreeSpace() { if (!isSDCardEnable()) return "sdcard unable!"; StatFs stat = new StatFs(getSDCardPath()); long blockSize, availableBlocks; availableBlocks = stat.getAvailableBlocksLong(); blockSize = stat.getBlockSizeLong(); long size = availableBlocks * blockSize / 1024L; return String.valueOf(size); }

統(tǒng)一描述sdcard的信息

/**
   * 獲取SD卡信息
   *
   * @return SDCardInfo
   */
  @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
  public static String getSDCardInfo() {
    SDCardInfo sd = new SDCardInfo();
    if (!isSDCardEnable()) return "sdcard unable!";
    sd.isExist = true;
    StatFs sf = new StatFs(Environment.getExternalStorageDirectory().getPath());
    sd.totalBlocks = sf.getBlockCountLong();
    sd.blockByteSize = sf.getBlockSizeLong();
    sd.availableBlocks = sf.getAvailableBlocksLong();
    sd.availableBytes = sf.getAvailableBytes();
    sd.freeBlocks = sf.getFreeBlocksLong();
    sd.freeBytes = sf.getFreeBytes();
    sd.totalBytes = sf.getTotalBytes();
    return sd.toString();
  }

  public static class SDCardInfo {
    boolean isExist;
    long totalBlocks;
    long freeBlocks;
    long availableBlocks;
    long blockByteSize;
    long totalBytes;
    long freeBytes;
    long availableBytes;

    @Override
    public String toString() {
      return "isExist=" + isExist +
          "\ntotalBlocks=" + totalBlocks +
          "\nfreeBlocks=" + freeBlocks +
          "\navailableBlocks=" + availableBlocks +
          "\nblockByteSize=" + blockByteSize +
          "\ntotalBytes=" + totalBytes +
          "\nfreeBytes=" + freeBytes +
          "\navailableBytes=" + availableBytes;
    }
  }

總結(jié)

以上就是分別獲取兩個不同的存儲空間總大小和可用大小的示例。希望對大家有用。

如有任何問題,請及時與我聯(lián)系,謝謝!

這篇Android之獲取手機內(nèi)部及sdcard存儲空間的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)站題目:Android之獲取手機內(nèi)部及sdcard存儲空間的方法
分享URL:http://weahome.cn/article/jipeji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部