2、讲述 StatFs 类
     StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
     StatFs 常用方法:

getAvailableBlocks()
    解释:返回 Int ,获取当前可用的存储空间
    getBlockCount()
    解释:返回 Int ,获取该区域可用的文件系统数
    getBlockSize()
    解释:返回 Int ,大小,以字节为单位,一个文件系统
    getFreeBlocks()
    解释:返回 Int ,该块区域剩余的空间
    restat(String path)
    解释:执行一个由该对象所引用的文件系统

3、完整例子读取 SDCard 内存
     存储卡在 Android 手机上是可以随时插拔的,每次的动作都对引起操作系统进行 ACTION_BROADCAST,本例子将使用上面学到的方法,计算出 SDCard 的剩余容量和总容量。代码如下:

1.package com.demo   
2.  
3.import java.io.File;   
4.import java.text.DecimalFormat;   
5.  
6.import android.R.integer;   
7.import android.app.Activity;   
8.import android.os.Bundle;   
9.import android.os.Environment;   
10.import android.os.StatFs;   
11.import android.view.View;   
12.import android.view.View.OnClickListener;   
13.import android.widget.Button;   
14.import android.widget.ProgressBar;   
15.import android.widget.TextView;   
16.import android.widget.Toast;   
17.  
18.public  
19.class getStorageActivity extends Activity {   
20.    private Button myButton;   
21.    /** Called when the activity is first created. */  
22.    @Override  
23.    public  
24.void onCreate(Bundle savedInstanceState) {   
25.        super.onCreate(savedInstanceState);   
26.        setContentView(R.layout.main);   
27.        findView();   
28.        viewHolder.myButton.setOnClickListener(new OnClickListener() {   
29.               
30.            @Override  
31.            public  
32.void onClick(View arg0) {   
33.                // TODO Auto-generated method stub   
34.                getSize();   
35.            }   
36.        });   
37.    }   
38.      
39.      
40.    void findView(){   
41.        viewHolder.myButton=(Button)findViewById(R.id.Button01);   
42.        viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);   
43.        viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);   
44.    }   
45.      
46.      
47.      
48.    void getSize(){   
49.        viewHolder.myTextView.setText("");   
50.        viewHolder.myBar.setProgress(0);   
51.        //判断是否有插入存储卡   
52.  
53.if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){   
54.            File path =Environment.getExternalStorageDirectory();   
55.            //取得sdcard文件路径   
56.            StatFs statfs=new StatFs(path.getPath());   
57.            //获取block的SIZE   
58.  
59.long blocSize=statfs.getBlockSize();   
60.            //获取BLOCK数量   
61.  
62.long totalBlocks=statfs.getBlockCount();   
63.            //己使用的Block的数量   
64.  
65.long availaBlock=statfs.getAvailableBlocks();   
66.               
67.            String[] total=filesize(totalBlocks*blocSize);   
68.            String[] availale=filesize(availaBlock*blocSize);   
69.            //设置进度条的最大值   
70.  
71.int maxValue=Integer.parseInt(availale[0])   
72.            *viewHolder.myBar.getMax()/Integer.parseInt(total[0]);   
73.            viewHolder.myBar.setProgress(maxValue);   
74.            String Text="总共:"+total[0]+total[1]+"\n"  
75.+"可用:"+availale[0]+availale[1];   
76.            viewHolder.myTextView.setText(Text);   
77.               
78.        }else  
79.if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){   
80.            Toast.makeText(getStorageActivity.this, "没有sdCard", 1000).show();   
81.        }   
82.    }   
83.      
84.    //返回数组,下标1代表大小,下标2代表单位 KB/MB   
85.    String[] filesize(long size){   
86.        String str="";   
87.        if(size>=1024){   
88.            str="KB";   
89.            size/=1024;   
90.            if(size>=1024){   
91.                str="MB";   
92.                size/=1024;   
93.            }   
94.        }   
95.        DecimalFormat formatter=new DecimalFormat();   
96.        formatter.setGroupingSize(3);   
97.        String result[] =new String[2];   
98.        result[0]=formatter.format(size);   
99.        result[1]=str;   
100.        return result;   
101.    }   
102.}

转载于:https://www.cnblogs.com/wxy8/archive/2011/10/13/2210808.html

【转】Android 如何获取SDCard 内存(二)相关推荐

  1. 学习笔记:android下获取sdcard容量大小

    在日常开发中,有时候需要对SDCard的容量先进行判断再存储文件.我们可以通过查看android关于setting功能的源代码,以便找到获取sdcard可用空间的方法. 获取sdcard容量大小的主要 ...

  2. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  3. Android 如何获取手机内存大小,内置存储空间大小

    直接上代码 package com.example.administrator.phoneinfo;import android.content.Context; import android.os. ...

  4. android 获取应用内存大小,如何在Android中获取当前内存使用量?

    这取决于您要获得的内存查询的定义. 通常,您想知道堆内存的状态,因为如果它占用了太多内存,您就会得到OOM并使应用程序崩溃. 为此,您可以检查下一个值:final Runtime runtime =  ...

  5. Android系统信息获取 之十二:获取屏幕分辨率及密度

    Android中屏幕分辨率可以有三种方式进行获取,一种是通过WindowManager获取,第二种是通过Resources获取,第三种是Display获取. 可结合具体环境灵活使用. 其中获取的屏幕宽 ...

  6. Android系统信息获取 之一:系统存储信息的获取(RAM,ROM,SDCard)

    Android系统的存储设备一般分为RAM,ROM,SDCard三个部分.其中RAM是Random Access Memory的缩写,是随机存储器,在工作状态时可以随机读写数据,断电以后会丢失数据,即 ...

  7. 【朝花夕拾】Android性能篇之(二)Java内存分配

    前言       原文:[朝花夕拾]Android性能篇之(二)Java内存分配        在内存方面,相比于C/C++程序员,咱们java系程序员算是比较幸运的,因为对于内存的分配和回收,都交给 ...

  8. android获取app内存信息,Android 获取内存信息(RAM,ROM)

    一.RAM,ROM简单介绍 RAM为运行内存,比如,360手机助手的悬浮窗,经常提示的运行内存超过80%之类的,指的都是运行内存.一般大小为几个G. ROM为存储数据的内存,比如,爱奇艺APP在视频页 ...

  9. Android 获取手机内存大小

    背景 项目中图片拍照功能是调用系统相机,由于某些手机内存不足,经常调用系统相机后,项目app进程被系统杀掉了,所以采取的措施是:调用系统相机前先判断手机可用内存大小,当可用内存低于500M时,提示用户 ...

最新文章

  1. SpringMVC的优点
  2. 缓存和字符串相互转换
  3. 五个工业风满满的 Look-alike 算法
  4. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
  5. SAP Spartacus login 页面看不到 UI 控件的问题解决
  6. SAP JAM里的用户profile功能
  7. WPF实现实现圆形菜单
  8. 耗时又繁重的SQL诊断优化,以后就都交给数据库自治服务DAS吧!
  9. e3是合法浮点数吗_下面4个选项中,均是合法浮点数的选项是?
  10. text html mime img,使用Python的email.mime.multipart发送HTML邮件时命...
  11. NO.47 确定项目要完成的需求列表
  12. JS - Math对象
  13. oracle xtts 测试,XTTS 跨平台表空间迁移测试
  14. 2017百度之星初赛
  15. 泰克示波器面板上的旋钮的作用有哪些
  16. 用线性探测法处理冲突时的散列表_案例
  17. java framemaker教程_Freemarker入门案例
  18. 安装并使用EVE模拟器
  19. 主成分分析(PCA)(principal component analysis)
  20. 前景背景样本不均衡解决方案:Focal Loss,GHM与PISA(附python实现代码)

热门文章

  1. 中小企业上ERP项目不可回避的9个基本问题
  2. 浅谈Nginx性能调优
  3. 前端工程师的CI进阶之路
  4. Dubbo(十二)dubbo的服务版本配置以及本地存根使用介绍
  5. vue中标签自定义属性的使用
  6. flexible.js 移动端自适应方案
  7. 信用评分系统运行原理上篇
  8. SpringBoot启动全流程源码解析(超详细版)
  9. Spring Boot 中使用MyBatis Mapper方式(xml)
  10. Spring深入理解-Spring框架设计理念