storage/sdcard1/zmaee/000

 我来答
掌舅父颗卧
2016-07-21 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:100%
帮助的人:15.7万
展开全部
Android-----SD卡路径问题以及如何获取SDCard内存SD卡路径问题以及如何获取SDCard内存昨天在研究拍照后突破的存储路径的问题,开始存储路径写死为:privateStringfolder="/sdcard/DCIM/Camera/"(SD卡上拍照程序的图片存储路径);后来发现这样写虽然一般不会出错,但不是很好,因为不同相机,可能路径会出问题。较好的方法是通过Environment来获取路径,最后给出一个例子,教你怎样获取SDCard的内存,显示出来告诉用户。讲述的内容如下:0、获取sd卡路径。1、讲述Environment类。2、讲述StatFs类。3、完整例子读取SDCard内存0、获取sd卡路径方法一:privateStringfolder="/sdcard/DCIM/Camera/"(SD卡上拍照程序的图片存储路径);//写死绝对路径,不赞成使用方法二:Java代码publicStringgetSDPath(){FilesdDir=null;booleansdCardExist=Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);//判断sd卡是否存在if(sdCardExist){sdDir=Environment.getExternalStorageDirectory();//获取跟目录}returnsdDir.toString();}然后:在后面加上斜杠,在加上文件名StringfileName=getSDPath()+"/"+name;//以name存在目录中1、讲述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(Stringtype)解释:返回File,取一个高端的公用的外部存储器目录来摆放某些类型的文件方法:getExternalStorageState()解释:返回File,获取外部存储设备的当前状态方法:getRootDirectory()解释:返回File,获取Android的根目录2、讲述StatFs类StatFs一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况StatFs常用方法:getAvailableBlocks()解释:返回Int,获取当前可用的存储空间getBlockCount()解释:返回Int,获取该区域可用的文件系统数getBlockSize()解释:返回Int,大小,以字节为单位,一个文件系统getFreeBlocks()解释:返回Int,该块区域剩余的空间restat(Stringpath)解释:执行一个由该对象所引用的文件系统3、完整例子读取SDCard内存存储卡在Android手机上是可以随时插拔的,每次的动作都对引起操作系统进行ACTION_BROADCAST,本例子将使用上面学到的方法,计算出SDCard的剩余容量和总容量。代码如下:Java代码packagecom.terry;importjava.io.File;importjava.text.DecimalFormat;importandroid.R.integer;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.StatFs;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.ProgressBar;importandroid.widget.TextView;importandroid.widget.Toast;publicclassgetStorageActivityextendsActivity{privateButtonmyButton;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);findView();viewHolder.myButton.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubgetSize();}});}voidfindView(){viewHolder.myButton=(Button)findViewById(R.id.Button01);viewHolder.myBar=(ProgressBar)findViewById(R.id.myProgressBar);viewHolder.myTextView=(TextView)findViewById(R.id.myTextView);}voidgetSize(){viewHolder.myTextView.setText("");viewHolder.myBar.setProgress(0);//判断是否有插入存储卡if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){Filepath=Environment.getExternalStorageDirectory();//取得sdcard文件路径StatFsstatfs=newStatFs(path.getPath());//获取block的SIZElongblocSize=statfs.getBlockSize();//获取BLOCK数量longtotalBlocks=statfs.getBlockCount();//己使用的Block的数量longavailaBlock=statfs.getAvailableBlocks();String[]total=filesize(totalBlocks*blocSize);String[]availale=filesize(availaBlock*blocSize);//设置进度条的最大值intmaxValue=Integer.parseInt(availale[0])*viewHolder.myBar.getMax()/Integer.parseInt(total[0]);viewHolder.myBar.setProgress(maxValue);StringText="总共:"+total[0]+total[1]+"\n"+"可用:"+availale[0]+availale[1];viewHolder.myTextView.setText(Text);}elseif(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){Toast.makeText(getStorageActivity.this,"没有sdCard",1000).show();}}//返回数组,下标1代表大小,下标2代表单位KB/MBString[]filesize(longsize){Stringstr="";if(size>=1024){str="KB";size/=1024;if(size>=1024){str="MB";size/=1024;}}DecimalFormatformatter=newDecimalFormat();formatter.setGroupingSize(3);Stringresult[]=newString[2];result[0]=formatter.format(size);result[1]=str;returnresult;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式