您的位置:首页 > 移动开发 > Android开发

android sd卡路径正确获取 双sd卡获取

2014-09-17 16:10 260 查看
/**

* 获取手机自身内存路径

*

*/

public static String getPhoneCardPath(){

return Environment.getDataDirectory().getPath();

}

/**

* 获取sd卡路径

* 双sd卡时,根据”设置“里面的数据存储位置选择,获得的是内置sd卡或外置sd卡

* @return

*/

public static String getNormalSDCardPath(){

return Environment.getExternalStorageDirectory().getPath();

}

/**

* 获取sd卡路径

* 双sd卡时,获得的是外置sd卡

* @return

*/

public static String getSDCardPath() {

String cmd = "cat /proc/mounts";

Runtime run = Runtime.getRuntime();// 返回与当前 Java 应用程序相关的运行时对象

BufferedInputStream in=null;

BufferedReader inBr=null;

try {

Process p = run.exec(cmd);// 启动另一个进程来执行命令

in = new BufferedInputStream(p.getInputStream());

inBr = new BufferedReader(new InputStreamReader(in));

String lineStr;

while ((lineStr = inBr.readLine()) != null) {

// 获得命令执行后在控制台的输出信息

Log.i("CommonUtil:getSDCardPath",
lineStr);

if (lineStr.contains("sdcard")

&& lineStr.contains(".android_secure")) {

String[] strArray = lineStr.split(" ");

if (strArray != null && strArray.length >= 5) {

String result = strArray[1].replace("/.android_secure",

"");

return result;

}

}

// 检查命令是否执行失败。

if (p.waitFor() != 0 && p.exitValue() == 1) {

// p.exitValue()==0表示正常结束,1:非正常结束

Log.e("CommonUtil:getSDCardPath",
"命令执行失败!");

}

}

} catch (Exception e) {

Log.e("CommonUtil:getSDCardPath", e.toString());

//return Environment.getExternalStorageDirectory().getPath();

}finally{

try {

if(in!=null){

in.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

if(inBr!=null){

inBr.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return Environment.getExternalStorageDirectory().getPath();

}

//查看所有的sd路径

public String getSDCardPathEx(){

String mount = new String();

try {

Runtime runtime = Runtime.getRuntime();

Process proc = runtime.exec("mount");

InputStream is = proc.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

String line;

BufferedReader br = new BufferedReader(isr);

while ((line = br.readLine()) != null) {

if (line.contains("secure")) continue;

if (line.contains("asec")) continue;

if (line.contains("fat")) {

String columns[] = line.split(" ");

if (columns != null && columns.length > 1) {

mount = mount.concat("*" + columns[1] + "\n");

}

} else if (line.contains("fuse")) {

String columns[] = line.split(" ");

if (columns != null && columns.length > 1) {

mount = mount.concat(columns[1] + "\n");

}

}

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return mount;

}

//获取当前路径,可用空间

public static long getAvailableSize(String path){

try{

File
base = new File(path);

StatFs
stat = new StatFs(base.getPath());

long
nAvailableCount = stat.getBlockSize() * ((long) stat.getAvailableBlocks());

return
nAvailableCount;

}catch(Exception
e){

e.printStackTrace();

}

return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: