需求:获取手机存储空间信息,包括总空间和可用空间
代码:
package com.suzi.getmemoryinfo;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.support.v7.app.AppCompatActivity;
import android.text.format.Formatter;
import android.widget.TextView;
import java.io.File;
public class MainActivity extends AppCompatActivity
{
//控件
private TextView tv = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
//获得手机内存空间信息
File dataFileDir = Environment.getDataDirectory();
String dataMemoryInfo = getMemoryInfo(dataFileDir);
//获得SD卡存储空间信息
File sdFileDir = Environment.getExternalStorageDirectory();
String sdMemoryInfo = getMemoryInfo(sdFileDir);
tv.setText("手机内存:\n" + dataMemoryInfo + "\nSD卡:\n" + sdMemoryInfo);
}
private String getMemoryInfo(File path)
{
// 获得一个磁盘状态对象
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize(); // 获得一个扇区的大小
long totalBlocks = stat.getBlockCount(); // 获得扇区的总数
long availableBlocks = stat.getAvailableBlocks(); // 获得可用的扇区数量
//总存储空间
String totalMemory = Formatter.formatFileSize(this, blockSize * totalBlocks);
//可用空间
String availableMemory = Formatter.formatFileSize(this, blockSize * availableBlocks);
return "总空间:" + totalMemory + "\n可用空间:" + availableMemory;
}
}
运行效果: