dir:/storage/emulated/0

也就是 sdcard目录

======

android 获取sd卡根目录

public String getSDPath(){
       File sdDir = null;
       boolean sdCardExist = Environment.getExternalStorageState()  
       .equals(android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在
       if(sdCardExist)  
       {                              
         sdDir = Environment.getExternalStorageDirectory();//获取跟目录
      }  
       return sdDir.toString();
}

然后:在后面加上斜杠,在加上文件名

String fileName = getSDPath() +"/" + name;//以name存在目录中

------

讲述 Environment 类

Environment 是一个提供访问环境变量的类。
Environment 包含常量:

MEDIA_BAD_REMOVAL
解释:返回getExternalStorageState() ,表明SDCard 被卸载前己被移除
MEDIA_CHECKING
解释:返回getExternalStorageState() ,表明对象正在磁盘检查。
MEDIA_MOUNTED
解释:返回getExternalStorageState() ,表明对象是否存在并具有读/写权限
MEDIA_MOUNTED_READ_ONLY
解释:返回getExternalStorageState() ,表明对象权限为只读
MEDIA_NOFS
解释:返回getExternalStorageState() ,表明对象为空白或正在使用不受支持的文件系统。
MEDIA_REMOVED
解释:返回getExternalStorageState() ,如果不存在 SDCard 返回
MEDIA_SHARED
解释:返回getExternalStorageState() ,如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回
MEDIA_UNMOUNTABLE
解释:返回getExternalStorageState() ,返回 SDCard 不可被安装 如果 SDCard 是存在但不可以被安装
MEDIA_UNMOUNTED
解释:返回getExternalStorageState() ,返回 SDCard 已卸掉如果 SDCard   是存在但是没有被安装

Environment 常用方法:

方法:getDataDirectory()
解释:返回 File ,获取 Android 数据目录。
方法:getDownloadCacheDirectory()
解释:返回 File ,获取 Android 下载/缓存内容目录。
方法:getExternalStorageDirectory()
解释:返回 File ,获取外部存储目录即 SDCard
方法:getExternalStoragePublicDirectory(String type)
解释:返回 File ,取一个高端的公用的外部存储器目录来摆放某些类型的文件
方法:getExternalStorageState()
解释:返回 File ,获取外部存储设备的当前状态
方法:getRootDirectory()
解释:返回 File ,获取 Android 的根目录
2、讲述 StatFs 类
StatFs 一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
StatFs 常用方法:

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

--------

计算出 SDCard 的剩余容量和总容量。代码如下:

package com.terry;
import java.io.File;

import java.text.DecimalFormat;
import android.R.integer;

import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.os.StatFs;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;

import android.widget.Toast;

public class getStorageActivity extends Activity {

private Button myButton;

/** Called when the activity is first created. */

@Override

public

void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       findView();

       viewHolder.myButton.setOnClickListener(new OnClickListener() {

         @Override

         public

void onClick(View arg0) {

            // TODO Auto-generated method stub

            getSize();

         }

       });

}

void findView(){

       viewHolder.myButton=(Button)findViewById(R.id.Button01);

       viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);

       viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);

}

void getSize(){

       viewHolder.myTextView.setText("");

       viewHolder.myBar.setProgress(0);

      //判断是否有插入存储卡

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

         File path =Environment.getExternalStorageDirectory();

         //取得sdcard文件路径

         StatFs statfs=new StatFs(path.getPath());

         //获取block的SIZE

long blocSize=statfs.getBlockSize();

         //获取BLOCK数量

long totalBlocks=statfs.getBlockCount();

         //己使用的Block的数量

long availaBlock=statfs.getAvailableBlocks();

         String[] total=filesize(totalBlocks*blocSize);

         String[] availale=filesize(availaBlock*blocSize);

         //设置进度条的最大值

int maxValue=Integer.parseInt(availale[0])

         *viewHolder.myBar.getMax()/Integer.parseInt(total[0]);

         viewHolder.myBar.setProgress(maxValue);

         String Text="总共:"+total[0]+total[1]+"/n"

+"可用:"+availale[0]+availale[1];

         viewHolder.myTextView.setText(Text);

       }else

if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){

         Toast.makeText(getStorageActivity.this, "没有sdCard",1000).show();

       }

}

//返回数组,下标1代表大小,下标2代表单位 KB/MB

String[] filesize(long size){

       String str="";

      if(size>=1024){

         str="KB";

         size/=1024;

         if(size>=1024){

            str="MB";

            size/=1024;

         }

       }

       DecimalFormat formatter=new DecimalFormat();

       formatter.setGroupingSize(3);

       String result[] =new String[2];

       result[0]=formatter.format(size);

       result[1]=str;

      return result;

}

}

----------

 

转载于:https://www.cnblogs.com/yue31313/p/7503160.html

更多相关文章

  1. Android之TabHost的几种使用方法
  2. Android中RadioGroup RadioButton CheckBox多选按钮实现方法以及
  3. Android-Intent的使用方法详解
  4. android 文件目录权限
  5. Android将Uri转化为文件路径的方法
  6. android HTTP post方法时,如何使用cookies
  7. Android NDK之----- C调用Java [GetMethodID方法的使用]
  8. 一些常用SD卡操作的方法,APk管理之类的方法
  9. android 文件保存方法 sd卡中或系统

随机推荐

  1. ffmpeg支持android硬件解码mediacodec
  2. Android中英文语言切换
  3. android 横竖屏等设置
  4. android 获取手机设备信息
  5. Android(安卓)源码阅读之MMS
  6. android Camera模块分析
  7. Android实现对imageview的拖动以及缩放
  8. android 常用代码
  9. Android(安卓)创建与解析XML(五)—— Dom4j
  10. android handle ui 更新