近期因项目需求。须要在存储卡查找文件,经測试发现部分手机挂载路径查找不到,这里分享一个有效的方法。

	/**
* 获取全部存储卡挂载路径
* @return
*/
public static List<String> getMountPathList() {
List<String> pathList = new ArrayList<String>();
final String cmd = "cat /proc/mounts";
Runtime run = Runtime.getRuntime();//取得当前JVM的运行时环境
try {
Process p = run.exec(cmd);//运行命令
BufferedInputStream inputStream = new BufferedInputStream(p.getInputStream());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line;
while ((line = bufferedReader.readLine()) != null) {
// 获得命令运行后在控制台的输出信息
Logger.i(line);
//输出信息内容: /data/media /storage/emulated/0 sdcardfs rw,nosuid,nodev,relatime,uid=1023,gid=1023 0 0
String[] temp = TextUtils.split(line, " ");
//分析内容可看出第二个空格后面是路径
String result = temp[1];
File file = new File(result);
//类型为文件夹、可读、可写,就算是一条挂载路径
if (file.isDirectory() && file.canRead() && file.canWrite()) {
Logger.d("add --> "+file.getAbsolutePath());
pathList.add(result);
} // 检查命令是否运行失败
if (p.waitFor() != 0 && p.exitValue() == 1) {
// p.exitValue()==0表示正常结束。1:非正常结束
Logger.e("命令运行失败!");
}
}
bufferedReader.close();
inputStream.close();
} catch (Exception e) {
Logger.e(e.toString());
//命令运行异常,就加入默认的路径
pathList.add(Environment.getExternalStorageDirectory().getAbsolutePath());
}
return pathList;
}

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXkxMzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="900" height="400">

Android获取全部存储卡挂载路径的更多相关文章

  1. Android获取可存储文件所有路径

    引言:大家在做app开发的时候,基本都会保存文件到手机,android存储文件的地方有很多,不像ios一样,只能把文件存储到当前app目录下,并且android手机由于厂家定制了rom,sdcard的 ...

  2. Android 获取assets的绝对路径

    第一种方法:       String path = "file:///android_asset/文件名"; 第二种方法:    InputStream abpath = get ...

  3. Android获取系统外置存储卡路径的方法

    android系统可通过Environment.getExternalStorageDirectory()获取存储卡的路径.可是如今有非常多手机内置有一个存储空间.同一时候还支持外置sd卡插入,这样通 ...

  4. android获取各种系统路径的方法

    链接https://blog.csdn.net/qq_26296197/article/details/51909423 通过Environment获取的 Environment.getDataDir ...

  5. Android 获取SD路径,存储空间大小的方法

    Android用 Environment.getExternalStorageDirectory() 方法获取 SD 卡的路径 , 卡存储空间大小及已占用空间获取方法 : /* 获取存储卡路径 */ ...

  6. Android获取SD卡路径及SDCard内存的方法

    这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...

  7. Android获取SD卡路径/内存的几种方法

    Android获取SD卡路径 本篇将会带领大家学习如何获取android路径的几种常见用法,但在我开始bb之前需要大家清楚android中内存和外存之间的区别,下面进行简短介绍:android中的内存 ...

  8. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  9. android开发之——获取相册图片和路径

    Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...

随机推荐

  1. jmeter 常见问题一(url重定向)

    刚接触JMeter,想把学习过程中遇到的一些问题,记录下来因为是新接触,所以很多东西都在摸索中! 使用Badboy录制了公司一个项目的登录功能导入到JMeter后,执行场景,发现登录校验成功,但后续的 ...

  2. java虚拟机(八)--java性能监控与故障处理工具

    问题定位: 除了个人经验,知识,工具也是很重要的,通过数据进行问题分析,包括:运行日志.异常堆栈.GC日志.线程快照(threaddump/javacore文件 ).堆转储快照(heapdump/hp ...

  3. 以POST方式推送JSON数据,并接收返回的服务器消息

    private static string GetResult(string jsonString, string type) { string url = GetUrl(type); string ...

  4. node 实现Token状态登录 及数据库增删改查

    1.项目目录结构 2.启动入口文件代码index.js const express = require('express') const bodyParser = require('body-pars ...

  5. 汇编学习pushl, popl

  6. mybatis中resultMap引发的吐血bug

    简单的讲: 问题背景:如果在写mybatis中的resultMap时,不下心将resultMapde id写成映射接口的名字,会发生什么? 结论:单元测试进度条卡住但不报错, Tomcat运行不报错, ...

  7. buf.writeInt16BE()函数详解

    buf.writeInt16BE(value, offset[, noAssert]) buf.writeInt16LE(value, offset[, noAssert]) value {Numbe ...

  8. python爬取豆瓣小组700+话题加回复啦啦啦python open file with a variable name

    需求:爬取豆瓣小组所有话题(话题title,内容,作者,发布时间),及回复(最佳回复,普通回复,回复_回复,翻页回复,0回复) 解决:1. 先爬取小组下,所有的主题链接,通过定位nextpage翻页获 ...

  9. 多校1007 Naive Operations

    >>点击进入原题测试<< 思路:好像是第一次这么印象深刻的写线段树,说实话,这个题确实很有意思,值得学习. 看了大神讲解视频,但是自己写的还是超时了. 参考来自 https:/ ...

  10. java属性的默认值

    String 默认null Boolean默认false int默认0 double默认0.0 类中使用自定义类定义属性默认值:null 在定义属性的时候可以指定默认值