目前我们大部分手机都会自带一张内存卡,并且还可以再插入一张内存卡,那如何获取插入的那张内存卡的目录呢?以下我实现代码:
/**
* 获得SD卡目录
* @return
*/
public String getSdPath(){
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath();
String[] s = filePath.split("/");//判断扩展卡目录是不是"/storage/sdcard0"
String lastFilePath = filePath.substring(filePath.lastIndexOf("/")+1);//二级文件夹名称
String rootPath = "";//保存一级目录名
String childPath = "";//保存二级目录名
if(s.length>2){
rootPath =filePath.substring(0,filePath.lastIndexOf("/"));
File f = new File(rootPath);
String[] fs = f.list();
if(fs !=null && fs.length>0 ){//判断是不是存在外置扩展卡
for(String str:fs){
if(!str.contains("Usb")&&!lastFilePath.equals(str)){
childPath = str;
break;
}
}
}
}
if(StringUtils.isNotEmpty(childPath)){
filePath = rootPath+File.separator+childPath;
}
System.out.println("filePath="+filePath);
File file = new File(filePath);//外置扩展卡
if(!file.exists()||!file.canExecute()){//卡不存在,或卡不可打开
filePath = Environment.getExternalStorageDirectory().getAbsolutePath();
}
System.out.println("filePath2="+filePath);
return filePath;
}
/**
* 获得SD卡目录
* @return
*/
public String getSdPath(){
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath();
String[] s = filePath.split("/");//判断扩展卡目录是不是"/storage/sdcard0"
String lastFilePath = filePath.substring(filePath.lastIndexOf("/")+1);//二级文件夹名称
String rootPath = "";//保存一级目录名
String childPath = "";//保存二级目录名
if(s.length>2){
rootPath =filePath.substring(0,filePath.lastIndexOf("/"));
File f = new File(rootPath);
String[] fs = f.list();
if(fs !=null && fs.length>0 ){//判断是不是存在外置扩展卡
for(String str:fs){
if(!str.contains("Usb")&&!lastFilePath.equals(str)){
childPath = str;
break;
}
}
}
}
if(StringUtils.isNotEmpty(childPath)){
filePath = rootPath+File.separator+childPath;
}
System.out.println("filePath="+filePath);
File file = new File(filePath);//外置扩展卡
if(!file.exists()||!file.canExecute()){//卡不存在,或卡不可打开
filePath = Environment.getExternalStorageDirectory().getAbsolutePath();
}
System.out.println("filePath2="+filePath);
return filePath;
}