获取SD卡剩余容量

package com.melody_sd;

import java.io.File;

import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.text.format.Formatter;
import android.widget.TextView;

public class MainActivity extends Activity {
	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//获取SD卡路径
		File path = Environment.getExternalStorageDirectory();
		//获取外部存储空间的所有信息
		StatFs stat = new StatFs(path.getPath());
		long blockSize;
		long totalBlocks;
		long availableBlocks;
		blockSize = stat.getBlockSize();			//获取空间块大小
		totalBlocks = stat.getBlockCount();	//获取空间块数量
		availableBlocks = stat.getAvailableBlocks();  //获取可用空间
		
	/*	//判断当前SDK版本是否是4.3或以上   4.3以上支持新方法
		if(Build.VERSION.SDK_INT >= 18){
			blockSize = stat.getBlockSizeLong();			//获取空间块大小
			totalBlocks = stat.getBlockCountLong();	//获取空间块数量
			availableBlocks = stat.getAvailableBlocksLong();  //获取可用空间
		}else{
			blockSize = stat.getBlockSize();			//获取空间块大小
			totalBlocks = stat.getBlockCount();	//获取空间块数量
			availableBlocks = stat.getAvailableBlocks();  //获取可用空间
		}*/
		
		//获取SD卡剩余空间大小   formatter是格式化数据显示类型
		String text = formatSize(availableBlocks * blockSize);
		//显示容量
		tv = (TextView) findViewById(R.id.tv);
		tv.setText(text);
	}

	private String formatSize(long size) {
		return Formatter.formatFileSize(this, size);
	}
}
================================================== 方式二========================================
<pre name="code" class="java">public class MainActivity extends Activity {

	private TextView tv_memory;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		tv_memory = (TextView) findViewById(R.id.tv_memory);
		
		//获取SD卡空间
		File sdCardFileDir = Environment.getExternalStorageDirectory();
		String sdCardMemory = getMemoryInfo(sdCardFileDir);
		
		//获取手机内存空间
		File dataFileDir = Environment.getDataDirectory();
		String dataMemory = getMemoryInfo(dataFileDir);
		
		//显示数据
		tv_memory.setText("SD卡空间:"+sdCardMemory+"\n 手机内存空间:"+ dataMemory);
		
	}
	
	/**
	 * 根据路径获取内存状态
	 * @param path
	 * @return
	 */
	private  String getMemoryInfo(File path){
		
		//获取存储空间的所有信息  
        StatFs stat = new StatFs(path.getPath());  
        
        long blockSize;  
        long totalBlocks;  
        long availableBlocks;  
        blockSize = stat.getBlockSize();           		 							//获取一个空间块大小  
        totalBlocks = stat.getBlockCount(); 									//获取所有空间块数量  
        availableBlocks = stat.getAvailableBlocks(); 				 //获取可用空间  
		
        //总空间大小   formatter是格式化数据显示类型  
        String totalMemory =Formatter.formatFileSize(this, totalBlocks * blockSize);
        
      //获取剩余空间大小   
        String availableMemory = Formatter.formatFileSize(this,availableBlocks * blockSize);
        
		return "总空间:" + totalMemory + "\n 可用空间:" + availableMemory;
	}
}




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值