Android获取SD卡路径/内存的几种方法
Android获取SD卡路径/内存的几种方法
Android获取SD卡路径
本篇将会带领大家学习如何获取android路径的几种常见用法,但在我开始bb之前需要大家清楚android中内存和外存之间的区别,下面进行简短介绍:
android中的内存:保存在内存中的程序和文件是相互关联的,什么意思呢?举个例子,假设你android手机内存中有一个程序叫bb,然后由bb程序创建了一份名叫cc的文件,当你删除bb的时候cc也会应为关联而被删除。
像是Shared Preferences或SQLite的内容就是保存到内存储中的,这些保存的内容会随程序的删除而删除用过的同学因该很快能理解。
android中的外存:我们平常在android手机使用的最多的就是外部存储,像是你用相机拍了一张照片,这些一般都是保存到外存中的,这些文件不会因为你删除了程序而不见。
随着android版本的增加一般所谓的sd卡(外存储卡)都变成内置的了
下面正式开始介绍,先是获取SD卡根目录的方法:
添加权限:
1
2
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//为真则SD卡已装入, sdCardExist=Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); }
if(sdCardExist)
{
sdDir = Environment.getExternalStorageDirectory();//获取跟目录 //查找SD卡根路径 sdDir.toString(); Log.e("main","得到的根目录路径:"+sdDir);
}
打印Log:
博主打开手机文件管理器首先来到的所在页面就是这个路径,只是手机上不会显示这个路径
另外一个更灵活的获取外部路径的方法:
File directory_doc = Environment.getExternalStoragePublicDirectory(Environment. DIRECTORY_DOCUMENTS); //使用这个方法需要传入公共目录的类型如Environment.DIRECTORY_DOCUMENTS //查看公共目录文档文件的路径 Log.e("main","得到的公共目录:"+directory_doc);
获取路径的其他方法;
方法 描述
DIRECTORY_DOCUMENTS 标准文件目录,可以是用户自定义创建的。Standard directory in which to place documents that have been created by the user.
DIRECTORY_DOWNLOADS 下载目录. Standard directory in which to place files that have been downloaded by the user.
DIRECTORY_MOVIES 影视目录.Standard directory in which to place movies that are available to the user.
DIRECTORY_MUSIC 音乐目录.Standard directory in which to place any audio files that should be in the regular list of music for the user.
DIRECTORY_PICTURES 用户可以获得的图片目录.Standard directory in which to place pictures that are available to the user.
更多内容:https://developer.android.com/reference/android/os/Environment
当你有多个外部存储卡:
File[] files; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { files = getExternalFilesDirs(Environment.MEDIA_MOUNTED); for(File file:files){ Log.e("main", "得到的全部外存:" +String.valueOf(file));
//便历所有外部存储
} }
这里由于博主手机只有一个sd卡,所以只打印了一行路径
1
2
得到内存:
File internal=getFilesDir();
Log.e("main","内存路径:"+internal);
1
2
如有错误欢迎纠正
作者:Kerwinoyyx
来源:CSDN
原文:https://blog.csdn.net/Kerwinoyyx/article/details/91401291
版权声明:本文为博主原创文章,转载请附上博文链接!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
备战九十,iOS面试题菜单,持续更新(题目及答案已上传Github)
Objective_C语言特性 (戳这里跳转到Github) 分类 扩展 代理(Delegate) 通知(NSNotification) KVO (Key-value observing) KVC(Key-value coding) 属性关键字 runloop (戳这里跳转到Github) RunLoop概念 RunLoop的数据结构 RunLoop的Mode RunLoop的实现机制 RunLoop与NSTimer RunLoop和线程 讲一下 Observer ? autoreleasePool 在何时被释放? 解释一下 事件响应 的过程? 解释一下 手势识别 的过程? 解释一下 GCD 在 Runloop 中的使用? 解释一下 NSTimer。 AFNetworking 中如何运用 Runloop? PerformSelector 的实现原理? 利用 runloop 解释一下页面的渲染的过程? 如何使用 Runloop 实现一个常驻线程?这种线程一般有什么作用? 为什么 NSTimer 有时候不好使? PerformSelector:afterDelay:这个方法在子线程中是否起...
- 下一篇
Android 多线程编程
Android 多线程编程文章目录线程的调用实现Runnable接口定义一个线程使用匿名内部类的方法启动子线程在子线程中更新主线程参数异步信息处理机制使用异步信息处理机制解析异步信息处理机制AsyncTask使用AsyncTask线程的调用实现Runnable接口定义一个线程class MyThread implements Runnable{ @Override public void run() { //处理具体的逻辑 } } 启动MyThread MyThread myThread = new MyThread();new Thread(myThread).start();12使用匿名内部类的方法启动子线程new Thread( new Runnable() { @Override public void run() { //处理具体的逻辑 } } ).start(); 在子线程中更新主线程参数子线程不能直接修改主线程中的变量,否者会出现异常。 异步信息处理机制使用异步信息处理机制首先定义一个整形常量UPDATE_DATA。 public static final int UPD...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主