android.os.StatFs#getBlockCount ( )源码实例Demo

下面列出了android.os.StatFs#getBlockCount ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override public String getFreeDiskPercentage() {
  File rootDirectory = Environment.getRootDirectory();
  StatFs fileSystemData = new StatFs(rootDirectory.getPath());

  long blockSize;
  long totalSize;
  long availableSize;
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    blockSize = fileSystemData.getBlockSizeLong();
    totalSize = fileSystemData.getBlockCountLong() * blockSize;
    availableSize = fileSystemData.getAvailableBlocksLong() * blockSize;
  } else {
    blockSize = fileSystemData.getBlockSize();
    totalSize = fileSystemData.getBlockCount() * blockSize;
    availableSize = fileSystemData.getAvailableBlocks() * blockSize;
  }

  long freeDiskPercentage = availableSize * 100 / totalSize;
  return String.valueOf(freeDiskPercentage);
}
 
源代码2 项目: HHComicViewer   文件: CommonUtils.java
public static String getStorageBlockSpace(String path) {
    try {
        //获取剩余存储空间
        File filePath = new File(path);
        StatFs sf = new StatFs(filePath.getPath());//创建StatFs对象
        long blockSize = sf.getBlockSize();//获得blockSize
        long totalBlock = sf.getBlockCount();//获得全部block
        long availableBlock = sf.getAvailableBlocks();//获取可用的block
        //用String数组来存放Block信息
        String[] total = fileSize(totalBlock * blockSize);
        String[] available = fileSize(availableBlock * blockSize);
        return "剩余空间:" + available[0] + available[1] + "/" + total[0] + total[1];
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}
 
源代码3 项目: GreenDamFileExploere   文件: ResourceManager.java
public static void calcStorageSize() {
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        File filePath = Environment.getExternalStorageDirectory(); // 获得sd卡的路径
        StatFs stat = new StatFs(filePath.getPath()); // 创建StatFs对象
        
        long blockSize = stat.getBlockSize(); // 获取block的size
        float totalBlocks = stat.getBlockCount(); // 获取block的总数
        
        mToalBytes = (long) (blockSize * totalBlocks) ;
        long availableBlocks = stat.getAvailableBlocks(); // 获取可用块大小
        
        
        mUsedBytes= (long) ((totalBlocks - availableBlocks) * blockSize);
        mFreeBytes = mToalBytes - mUsedBytes;
        
        System.out.println("存储空间" + TextUtil.getSizeSting(mToalBytes) + ",已用" +  TextUtil.getSizeSting(mUsedBytes) + "剩余:" + TextUtil.getSizeSting(mFreeBytes));
    } else {
        System.out.println("存储卡不存在:存储空间" + TextUtil.getSizeSting(mToalBytes) + ",已用" +  TextUtil.getSizeSting(mUsedBytes) + "剩余:" + TextUtil.getSizeSting(mFreeBytes));
    }
}
 
源代码4 项目: cube-sdk   文件: DiskFileUtils.java
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public static long getUsedSpace(File path) {
    if (path == null) {
        return -1;
    }

    if (Version.hasGingerbread()) {
        return path.getTotalSpace() - path.getUsableSpace();
    } else {
        if (!path.exists()) {
            return -1;
        } else {
            final StatFs stats = new StatFs(path.getPath());
            return (long) stats.getBlockSize() * (stats.getBlockCount() - stats.getAvailableBlocks());
        }
    }
}
 
源代码5 项目: fresco   文件: StatFsHelper.java
/**
 * Gets the information about the total storage space, either internal or external depends on the
 * given input
 *
 * @param storageType Internal or external storage type
 * @return available space in bytes, -1 if no information is available
 */
@SuppressLint("DeprecatedMethod")
public long getTotalStorageSpace(StorageType storageType) {
  ensureInitialized();

  maybeUpdateStats();

  StatFs statFS = storageType == StorageType.INTERNAL ? mInternalStatFs : mExternalStatFs;
  if (statFS != null) {
    long blockSize, totalBlocks;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
      blockSize = statFS.getBlockSizeLong();
      totalBlocks = statFS.getBlockCountLong();
    } else {
      blockSize = statFS.getBlockSize();
      totalBlocks = statFS.getBlockCount();
    }
    return blockSize * totalBlocks;
  }
  return -1;
}
 
源代码6 项目: mobile-manager-tool   文件: StorageUtil.java
public static long getTotalExternal_SDMemorySize() {
    if (isSDCardExist()) {
        File path = Environment.getExternalStorageDirectory();
        File externalSD = new File(path.getPath() + "/external_sd");
        if (externalSD.exists() && externalSD.isDirectory()) {
            StatFs stat = new StatFs(path.getPath() + "/external_sd");
            long blockSize = stat.getBlockSize();
            long totalBlocks = stat.getBlockCount();
            if (getTotalExternalMemorySize() != -1
                    && getTotalExternalMemorySize() != totalBlocks
                    * blockSize) {
                return totalBlocks * blockSize;
            } else {
                return ERROR;
            }
        } else {
            return ERROR;
        }

    } else {
        return ERROR;
    }
}
 
源代码7 项目: picasso   文件: Utils.java
static long calculateDiskCacheSize(File dir) {
  long size = MIN_DISK_CACHE_SIZE;

  try {
    StatFs statFs = new StatFs(dir.getAbsolutePath());
    //noinspection deprecation
    long blockCount =
        SDK_INT < JELLY_BEAN_MR2 ? (long) statFs.getBlockCount() : statFs.getBlockCountLong();
    //noinspection deprecation
    long blockSize =
        SDK_INT < JELLY_BEAN_MR2 ? (long) statFs.getBlockSize() : statFs.getBlockSizeLong();
    long available = blockCount * blockSize;
    // Target 2% of the total space.
    size = available / 50;
  } catch (IllegalArgumentException ignored) {
  }

  // Bound inside min/max size for disk cache.
  return Math.max(Math.min(size, MAX_DISK_CACHE_SIZE), MIN_DISK_CACHE_SIZE);
}
 
源代码8 项目: android-file-chooser   文件: FileUtil.java
public static long readSDCard(Context context, Boolean isRemovable, Boolean freeOrTotal) {
    DecimalFormat df = new DecimalFormat("0.00");
    getStoragePath(context, isRemovable);
    StatFs sf = new StatFs(getStoragePath(context, isRemovable));
    long blockSize;
    long blockCount;
    long availCount;
    if (Build.VERSION.SDK_INT > 18) {
        blockSize = sf.getBlockSizeLong(); //文件存储时每一个存储块的大小为4KB
        blockCount = sf.getBlockCountLong();//存储区域的存储块的总个数
        availCount = sf.getFreeBlocksLong();//存储区域中可用的存储块的个数(剩余的存储大小)
    } else {
        blockSize = sf.getBlockSize();
        blockCount = sf.getBlockCount();
        availCount = sf.getFreeBlocks();
    }
    //Log.d("sss", "总的存储空间大小:" + blockSize * blockCount / 1073741824 + "GB" + ",剩余空间:"
    //    + availCount * blockSize / 1073741824 + "GB"
    //    + "--存储块的总个数--" + blockCount + "--一个存储块的大小--" + blockSize / 1024 + "KB");
    //return df.format((freeOrTotal ? availCount : blockCount) * blockSize / 1073741824.0);
    return (freeOrTotal ? availCount : blockCount) * blockSize;
    //return "-1";
}
 
源代码9 项目: Telegram   文件: ChatAttachAlertDocumentLayout.java
private String getRootSubtitle(String path) {
    try {
        StatFs stat = new StatFs(path);
        long total = (long) stat.getBlockCount() * (long) stat.getBlockSize();
        long free = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();
        if (total == 0) {
            return "";
        }
        return LocaleController.formatString("FreeOfTotal", R.string.FreeOfTotal, AndroidUtilities.formatFileSize(free), AndroidUtilities.formatFileSize(total));
    } catch (Exception e) {
        FileLog.e(e);
    }
    return path;
}
 
源代码10 项目: fdroidclient   文件: Utils.java
public static long getImageCacheDirTotalMemory(Context context) {
    File statDir = getImageCacheDir(context);
    while (statDir != null && !statDir.exists()) {
        statDir = statDir.getParentFile();
    }
    if (statDir == null) {
        return 100 * 1024 * 1024; // just return a minimal amount
    }
    StatFs stat = new StatFs(statDir.getPath());
    if (Build.VERSION.SDK_INT < 18) {
        return (long) stat.getBlockCount() * (long) stat.getBlockSize();
    } else {
        return stat.getBlockCountLong() * stat.getBlockSizeLong();
    }
}
 
源代码11 项目: OkDownload   文件: OkDownloadManager.java
public static long getTotalExternalMemorySize() {
    if (hasSDCard()) {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return totalBlocks * blockSize;
    } else {
        return -1;
    }
}
 
源代码12 项目: Kernel-Tuner   文件: Utility.java
public static long getTotalSpaceInBytesOnInternalStorage()
{
    long usedSpace;
    StatFs stat = new StatFs(Environment.getDataDirectory().getPath());
    usedSpace = ((long) stat.getBlockCount()) * (long) stat.getBlockSize();

    return usedSpace;
}
 
源代码13 项目: sctalk   文件: CommonUtil.java
/**
 * @Description 获取sdcard容量
 * @return
 */
@SuppressWarnings({
        "deprecation", "unused"
})
private static long getSDAllSize() {
    File path = Environment.getExternalStorageDirectory();
    StatFs sf = new StatFs(path.getPath());
    long blockSize = sf.getBlockSize();
    long allBlocks = sf.getBlockCount();
    // 返回SD卡大小
    // return allBlocks * blockSize; //单位Byte
    // return (allBlocks * blockSize)/1024; //单位KB
    return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
}
 
源代码14 项目: Dota2Helper   文件: SDCardManager.java
@SuppressWarnings("deprecation")
private void init() {
	try {
		StatFs statFs = new StatFs(sdPath);
		long totalBlocks = statFs.getBlockCount();// 区域块数
		long availableBlocks = statFs.getAvailableBlocks();// 可利用区域块数
		long blockSize = statFs.getBlockSize();// 每个区域块大小
		nSDTotalSize = totalBlocks * blockSize;
		nSDFreeSize = availableBlocks * blockSize;
	} catch (Exception e) {

	}
}
 
源代码15 项目: styT   文件: FileSizeUtil.java
/**
 * 获取SDCARD总的存储空间
 *
 * @return
 */
public static long getTotalExternalMemorySize() {
    if (externalMemoryAvailable()) {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return totalBlocks * blockSize;
    } else {
        return ERROR;
    }
}
 
源代码16 项目: MyUtil   文件: DeviceUtils.java
/**
 * 获取手机内部总存储空间 单位byte
 * @return
 */
@SuppressWarnings("deprecation")
public static long getTotalInternalStorageSize() {
    File path = Environment.getDataDirectory();
    StatFs stat = new StatFs(path.getPath());

    if(Build.VERSION.SDK_INT >= 18) {
        return stat.getTotalBytes();
    } else {
        return (long) stat.getBlockCount() * stat.getBlockSize();
    }
}
 
源代码17 项目: TvLauncher   文件: StorageUtil.java
/**
 * 获取SDCARD总的存储空间
 *
 * @return
 */
public long getTotalExternalMemorySize() {
    if (externalMemoryAvailable()) {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return totalBlocks * blockSize;
    } else {
        return ERROR;
    }
}
 
源代码18 项目: CleanExpert   文件: DiskStat.java
private void calculateInternalSpace() {
    File root = Environment.getRootDirectory();
    StatFs sf = new StatFs(root.getPath());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        mInternalBlockSize = sf.getBlockSizeLong();
        mInternalBlockCount = sf.getBlockCountLong();
        mInternalAvailableBlocks = sf.getAvailableBlocksLong();
    } else {
        mInternalBlockSize = sf.getBlockSize();
        mInternalBlockCount = sf.getBlockCount();
        mInternalAvailableBlocks = sf.getAvailableBlocks();
    }
}
 
源代码19 项目: COCOFramework   文件: SystemModule.java
private int calculateDiskCacheSize(File dir) {
    StatFs statFs = new StatFs(dir.getAbsolutePath());
    int available = statFs.getBlockCount() * statFs.getBlockSize();
    int size = available / 50;
    return Math.max(Math.min(size, MAX_DISK_CACHE_SIZE), MIN_DISK_CACHE_SIZE);
}
 
源代码20 项目: letv   文件: MemoryInfoUtil.java
public static long getTotalInternalMemorySize() {
    StatFs stat = new StatFs(Environment.getDataDirectory().getPath());
    return ((long) stat.getBlockCount()) * ((long) stat.getBlockSize());
}