android的各种文件目录

来源:互联网 发布:网络设计是什么级别 编辑:程序博客网 时间:2024/05/22 03:52

今天学习FileProvider,里面就涉及到了内部存储,外部存储。就去查了一下,这里整理一下。

内部存储:

主要涉及到的方法:context.getCacheDir()和context.getFilesDir()

context.getCacheDir() 获取到的路径是: /data/data/包名/cache。在此路径下,如果在系统即将耗尽存储,它会在不进行警告的情况下删除您的缓存文件。最好的办法是给你的应用缓存设置一个最大值,当达到这个值时你应该去删除部分缓存文件以便能再次利用这部分空间(我查了很多的资料没有查到,大概是通过判断文件的大小,当达到这个值时通过file.delete来一个个的删除文件)。

context.getFilesDir()获取到的路径是:/data/data/包名/files。这个目录下保存应用程序的数据,通过 openFileOutput(String, int) 创建的文件都保存在这个文件目录下。
注意:在res/xml/filepaths.xml中的标签<files-path path="images/*" name="myimages"/>, files-path就是指代的路径:/data/data/包名/files,其中path属性就是files的下一级,即:/data/data/包名/files/images/,那么name属性的值myimages和uri的值content://com.example.myapp.fileprovider/myimages/default_image.jpg中的myimages是一个。

外部存储:

主要涉及到的方法:Environment.getExternalStorageDirectory()、context.getExternalFilesDir(dir)和context.getExternalCacheDir()

Environment.getExternalStorageDirectory()获取到的路径是: /storage/emulated/0。这是SD卡根路径,6.0后写入需要用户授权。在此路径下的文件是app独立文件,是完全开放的,对于其他应用程序或者用户都可以访问,当你的应用被卸载的时候这部分文件也不会被删除

context.getExternalFilesDir(dir)获取到的路径是: /storage/emulated/0/Android/data/包名/files/dir。在此路径下的文件是app专属文件这类文件应该是随着app删除而一起删除的。

context.getExternalCacheDir()获取的路径是:/storage/emulated/0/Android/data/包名/cache ,这个路径被Android系统认定为应用程序的缓存路径,当程序被卸载的时候,这里的数据也会一起被清除掉,这样就不会出现删除程序之后手机上还有很多残留数据的问题。

除了这五个主要的方法还有一些方法如下:
Environment.getDataDirectory():/data 用户数据目录。

Environment.getDownloadCacheDirectory(): /cache 下载缓存内容目录。

Environment.getRootDirectory(): /system 系统主目录

Environment.getExternalStoragePublicDirectory(String s): /storage/emulated/0/s一些共享文件应该被放置在该目录中

getPackageCodePath(): /data/app/com.demo.myapp-1.apk。 Android 安装包的完整路径,这个包是一个zip的压缩文件,它包括应用程序的代码和assets文件。

getPackageResourcePath(): /data/app/com.demo.myapp-1.apk。ndroid 安装包的完整路径,这个包是一个ZIP的要锁文件,它包括应用程序的私有资源。

getDatabasePath(String s): /data/data/com.demo.myapp/databases/s 保存通过
Context.openOrCreateDatabase 创建的数据库文件。

getDir(String s, Context.MODE_PRIVATE) : /data/data/com.my.app/app_s这是一个可以存放你自己应用程序自定义的文件,你可以通过该方法返回的File实例来创建或者访问这个目录,注意该目录下的文件只有你自己的程序可以访问。

原创粉丝点击