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

	/**
* 获取全部存储卡挂载路径
* @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">

最新文章

  1. 太多选择——企业如何选择合适的BI工具?
  2. 利用SkyDrive Pro 迅速批量下载SharePoint Server 上已上传的文件
  3. 我所理解的JavaScript闭包
  4. IOS 杂笔-10(Base64 加密)
  5. eclipse常用快捷键及调试方法(虽然现在看不懂,但是感觉以后肯定会用到,先转了)
  6. Oracle 排序中使用nulls first 或者nulls last 语法
  7. iBatisnet系列(二) 配置运行环境和日志处理
  8. Using self-defined Parcelable objects during an Android AIDL RPC / IPC call
  9. Java多线程模式(二)
  10. [OI笔记] 最长上升子序列与网络流建模
  11. exc_bad_access(code=1, address=0x789870)野指针错误
  12. JQuery基础学习总结
  13. VIM用法
  14. java使用Base64编码和解码的图像文件
  15. 磁盘管理之inode与block
  16. XML如何添加注释?
  17. Linux实战教学笔记51:Zabbix监控平台3.2.4(三)生产环境案例
  18. ckeditor5字体颜色,字体背景颜色设置显示
  19. django.db.utils.OperationalError: (1045, &quot;Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: ...
  20. Linux简单入门

热门文章

  1. 继续C#开发or转做产品
  2. Windows 2008 防火墙开放端口
  3. 安卓app测试之启动时间和电量监控
  4. java_IO_3
  5. java虚拟机(六)--垃圾收集器和内存分配策略
  6. cgroup代码浅析(1)
  7. 使用js将Unix时间戳转换为普通时间
  8. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer
  9. [bzoj4027][HEOI2015][兔子与樱花] (树形dp思想+玄学贪心)
  10. HTML5中Canvas概述