美文网首页
Android-文件路径api

Android-文件路径api

作者: zzq_nene | 来源:发表于2020-07-08 00:15 被阅读0次
    1、Environment.getDataDirectory() = /data
    这个方法是获取内部存储的根路径
    2、Context.getFilesDir().getAbsolutePath() = /data/user/0/packname/files
    这个方法是获取某个应用在内部存储中的files路径。
    3、getCacheDir().getAbsolutePath() = /data/user/0/packname/cache
    这个方法是获取某个应用在内部存储中的cache路径
    4、getDir(“myFile”, MODE_PRIVATE).getAbsolutePath() = /data/user/0/packname/app_myFile
    这个方法是获取某个应用在内部存储中的自定义路径

    Context.getPackageName();           // 用于获取APP的所在包目录
    Context.getPackageCodePath();       //来获得当前应用程序对应的apk文件的路径
    Context.getPackageResourcePath();   // 获取该程序的安装包路径
    Context.getDatabasePath();          //返回通过Context.openOrCreateDatabase创建的数据库文件

    Environment.getDataDirectory().getPath();          // 获得根目录/data
    Environment.getDownloadCacheDirectory().getPath();     //获得缓存目录/cache
    Environment.getExternalStorageDirectory().getPath();   //获得SD卡目录/mnt/sdcard   或者  /storage/emulated/0
    Environment.getRootDirectory().getPath();           // 获得系统目录/system


    5、Environment.getExternalStorageDirectory().getAbsolutePath() = /storage/emulated/0
    这个方法是获取外部存储的根路径,应用卸载,这个不会被删除
    6、Environment.getExternalStoragePublicDirectory(“”).getAbsolutePath() = /storage/emulated/0
    这个方法是获取外部存储的根路径
    7、Context.getExternalFilesDir("").getAbsolutePath() = /storage/emulated/0/Android/data/packname/files
这里的/storage/emulated/0/其实在某些手机上也是在sdcard
    这个方法是获取某个应用在外部存储中的files路径,依然是属于该应用的,卸载应用会被删除,这个是不需要获取读写权限的
    8、Context.getExternalCacheDir().getAbsolutePath() = /storage/emulated/0/Android/data/packname/cache
    这个方法是获取某个应用在外部存储中的cache路径,依然是属于该应用的,卸载应用会被删除,这个是不需要获取读写权限的

    清除缓存:我们知道应用程序在运行过程中需要经过很多过程,比如读入程序,计算,输入输出等等,这些过程中肯定会产生很多的数据,
    它们在内存中,以供程序运行时调用。所以清除缓存清除的是APP运行过程中所产生的临时数据。
    清除数据:清除数据才是真正的删除了我们保存在文件中的数据(永久性数据,如果不人为删除的话会一直保存在文件中)例如当我们在
    设置里面清除了某个应用的数据,那么/data/user/0/packname/和/storage/emulated/0/Android/data/packname/下的文件里面的数
    据会全部删除,包括cache,files,lib,shared_prefs等等。

当targetSdkVersion=29时,如果应用程序访问外部非私有目录的时候,会报错,

java.io.FileNotFoundException: /storage/emulated/0/min77/51850812e89ff8ead2002c15ebf417ac: open failed: EACCES (Permission denied)

解决办法:
在AndroidManifest.xml中给application设置
android:requestLegacyExternalStorage="true"

或者使用外部存储
比如

Context.getExternalFilesDir("").getAbsolutePath() = /storage/emulated/0/Android/data/packname/files
    这个方法是获取某个应用在外部存储中的files路径,依然是属于该应用的,卸载应用会被删除
Context.getExternalCacheDir().getAbsolutePath() = /storage/emulated/0/Android/data/packname/cache
    这个方法是获取某个应用在外部存储中的cache路径,依然是属于该应用的,卸载应用会被删除

纯属个人使用笔记

相关文章

网友评论

      本文标题:Android-文件路径api

      本文链接:https://www.haomeiwen.com/subject/dwexcktx.html