Android 获取存储
getRootDirectory /data
getExternalStorageDirectory() /storage/emulated/0
getDataDirectory() /system
注意:
long l1 = localStatFs.getBlockSize();
long l2 = localStatFs.getBlockCount();
否则越界
package com.mz.realparam.utils;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
public class MemUtil {
public static long getDataDir()
{
long l1 = -1L;
try
{
StatFs localStatFs = new StatFs(Environment.getDataDirectory().getPath());
long l2 = localStatFs.getBlockSize();
int i = localStatFs.getBlockCount();
l1 = l2 * i;
return l1;
}
catch (Throwable localThrowable)
{
localThrowable.printStackTrace();
}
return l1;
}
public static long getDataDirAvail()
{
long l1 = -1L;
try
{
StatFs localStatFs = new StatFs(Environment.getDataDirectory().getPath());
long l2 = localStatFs.getBlockSize();
int i = localStatFs.getAvailableBlocks();
l1 = l2 * i;
return l1;
}
catch (Throwable localThrowable)
{
localThrowable.printStackTrace();
}
return l1;
}
//--------------------------------------------------------
public static String getExternalStorage(Context paramContext) {
StatFs localStatFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
return Formatter.formatFileSize(paramContext,
localStatFs.getBlockSize() * localStatFs.getBlockCount())+" | "
+(localStatFs.getBlockSize() * localStatFs.getBlockCount())+" | "+ localStatFs.getBlockCount()+" | "+localStatFs.getBlockSize();
}
public static String getExternalStorageAvail(Context paramContext)
{
if (Environment.getExternalStorageState().equals("mounted"));
for (int i = 1; i == 0; i = 0)
return "0";
try
{
StatFs localStatFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
int j = localStatFs.getBlockSize();
int k = localStatFs.getAvailableBlocks();
long a= localStatFs.getBlockSize();
long b = localStatFs.getAvailableBlocks();
return Formatter.formatFileSize(
paramContext.getApplicationContext(), j * k)+" | "+(j*k)+" "+Formatter.formatFileSize(
paramContext.getApplicationContext(), a * b)+" | "+(a*b);
// return k * j;
}
catch (Throwable localThrowable)
{
localThrowable.printStackTrace();
}
return "0";
}
public static String getSDCardSize(Context paramContext) {
if ("mounted".equals(Environment.getExternalStorageState())) {
StatFs localStatFs = new StatFs(Environment.getExternalStorageDirectory().getPath());
long l1 = localStatFs.getBlockSize();
long l2 = localStatFs.getBlockCount();
return Formatter.formatFileSize(paramContext, l2 * l1)+" | "+(l2*l1)+" | "+l2+" | "+l1;
}
return "0";
}
//-------------------------------------------------
//SystemSize
public static String getSystemSizeRootDir(Context paramContext)
{
StatFs localStatFs = new StatFs(Environment.getRootDirectory().getPath());
long l1 = localStatFs.getBlockSize();
long l2 = localStatFs.getBlockCount();
return Formatter.formatFileSize(paramContext.getApplicationContext(), l2 * l1)+" | "+(l2 * l1);
}
public static String getSystemSizeRootDirAvail(Context paramContext)
{
StatFs localStatFs = new StatFs(Environment.getRootDirectory().getPath());
long l1 = localStatFs.getBlockSize();
long l2 = localStatFs.getAvailableBlocks();
return Formatter.formatFileSize(paramContext.getApplicationContext(), l2 * l1)+" | "+(l2 * l1);
}
//----------------------------------
//----------------------------------
public static String getMeminfo()
{
String str = null;
try
{
BufferedReader localBufferedReader = new BufferedReader(new FileReader("/proc/meminfo"), 8192);
str = localBufferedReader.readLine().split("\\s+")[1];
localBufferedReader.close();
int i = 0;
if (str != null)
i = (int)Math.ceil(new Float(Float.valueOf(str).floatValue() / 1024.0F).doubleValue());
return i + "MB";
}
catch (Exception localException)
{
while (true)
localException.printStackTrace();
}
}
public static long getMeminfo2(Context paramContext)
{
try
{
BufferedReader localBufferedReader = new BufferedReader(new FileReader("/proc/meminfo"), 8192);
long l = 1024L * Long.valueOf(localBufferedReader.readLine().split("\\s+")[1]).longValue();
localBufferedReader.close();
return l / 1024L / 1024L;
}
catch (IOException localIOException)
{
}
return 0L;
}
//-----------------------------------
public static long getavailMem(Context paramContext)
{
ActivityManager localActivityManager = (ActivityManager)paramContext.getSystemService("activity");
ActivityManager.MemoryInfo localMemoryInfo = new ActivityManager.MemoryInfo();
localActivityManager.getMemoryInfo(localMemoryInfo);
return localMemoryInfo.availMem/ 1024L / 1024L;
}
}