Android 通过Context、Environment 获取内置和外置文件夹位置

本文介绍了如何在Android中通过Context和Environment获取内置及外置存储的文件夹路径,详细阐述了两种方法的使用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Android开发中使用到的文件夹主要分为内置和外置储存空间,这里的内置储存空间和外置储存空间不是指系统储存空间和外置SD卡储存空间。在Android开发过程中一般外置储存空间是指在手机文件管理软件中可以直接看到的储存空间,内置储存空间是指系统及其相关的文件目录在一般的文件管理软件是看不到的,内置储存空间一般是用户没有操作权限的目录
        因为不同的厂商对Android系统进行了修改,所以Android指定功能目录的位置不是绝对的,Android开发中一般使用Context对象或者Environment 中的静态函数获取文件夹的位置。
        内置储存特殊文件夹:
              1、/data/data/
                       这个文件夹是应用在系统的位置
                       /data/data/<package_name>/cache      应用缓存
                       /data/data/<package_name>/lib           当前应用使用的动态链接库对应abi的软连接
                       /data/data/<package_name>/files/..     应用使用到的文件目录
       外置储存特殊文件夹:
              1、外置储存位置
                       /storage/emulated/0/  当前目录是在文件管理器中看到的目录  
                       在根目录有一个软连接/sdcard/     
             2、外置储存中的Android文件夹
                       /storage/emulated/0/Android               当前文件是在外置储存空间中,所以文件管理关键中是可以看到的
                       /storage/emulated/0/Android/cache    默认的外部缓存空间
                       /storage/emulated/0/Android/data/<package_name>                应用操作的外部储存空间
                       /storage/emulated/0/Android/data/<package_name>/cache      应用的外部缓存空间
                       /storage/emulated/0/Android/data/<package_name>/files/..      应用的外部储存空间中可操作文件夹
            3、位置储存中的九大公有目录
                      九大公有目录是指系统的默认分类文件夹都在外置储存空间。
                     例如:
                       /storage/emulated/0/DCIM(相册)
                       /storage/emulated/0/Download(下载)
                       /storage/emulated/0/Music(音乐)
                       ....
    一、使用Context对象获取目录位置
            使用Context对象获取的一般都是相对于当前应用的路径,此类文件夹操作一般不需要动态获取文件读写操作,此类文件在应用卸载后也会被删除。                
            1)特殊内置文件夹
1、用于获取APP的所在包目录
     context.getPackageName() 
2、来获得当前应用程序对应的 apk 文件的路径
     context.getPackageCodePath() 
3、获取该程序的安装包路径
     context.getPackageResourcePath() 
4、/data/user/0/应用包名/databases/参数名【通过Context.openOrCreateDatabase创建】
     context.getDatabasePath()  

            2)内置储存

1、/data/user/0/应用包名/app_参数名
    context.getDir(String name, int mode)
2、/data/data/<application package>/cache目录
    context.getCacheDir() 
3、/data/data/<package>/files
    context.getFilesDir()
    context.getFileStreamPath(String name) 
    context.getCodeCacheDir()

            3)外置储存

1、/sdcard/Android/data/<package>/cache
    Context.getExternalCacheDir() 
2、/mnt/sdcard/Android/obb/<application package> obb目录(游戏数据包) 
    Context.getObbDir()
3、storage/sdcard/Android/data/包名/files/....
    Context.getExternalFilesDir(Environment.DIRECTORY_MUSIC);

    二、使用Environment 静态函数获取目录位置

           由于不同Android系统厂商的绝对路径不同,所以使用Environment静态函数获取指定文件夹位置
            1)特殊外置文件夹
1、获得系统目录/system
Environment.getRootDirectory()

            2)内置储存

2、获得根目录/data/data 内部存储路径
    Environment.getDataDirectory() 
3、获得缓存目录/data/cache
    Environment.getDownloadCacheDirectory()

            3)外置储存

1、获得SD卡目录/mnt/sdcard
    Environment.getExternalStorageDirectory()
2、获取SD卡的状态   
    Environment.getExternalStorageState();
        MEDIA_BAD_REMOVAL  表明SDCard 被卸载前己被移除
        MEDIA_CHECKING	表明对象正在磁盘检查。
        MEDIA_MOUNTED	表明对象是否存在并具有读/写权限
        MEDIA_MOUNTED_READ_ONLY	表明对象权限为只读
        MEDIA_NOFS	表明对象为空白或正在使用不受支持的文件系统。
       MEDIA_REMOVED	如果不存在 SDCard 返回
       MEDIA_SHARED	如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回
       MEDIA_UNMOUNTABLE	返回 SDCard 不可被安装 SDCard 是存在但不可以被安装
       MEDIA_UNMOUNTED	返回 SDCard 已卸掉如果 SDCard 是存在但是没有被安装
    
3、获取外部公有目录【九大类】
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
        DIRECTORY_ALARMS //警报的铃声
        DIRECTORY_DCIM //相机拍摄的图片和视频保存的位置
        DIRECTORY_DOWNLOADS //下载文件保存的位置
        DIRECTORY_MOVIES //电影保存的位置, 比如 通过google play下载的电影
        DIRECTORY_MUSIC //音乐保存的位置
        DIRECTORY_NOTIFICATIONS //通知音保存的位置
        DIRECTORY_PICTURES //下载的图片保存的位置
        DIRECTORY_PODCASTS //用于保存podcast(博客)的音频文件
        DIRECTORY_RINGTONES //保存铃声的位置
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值