Android 有关文件路径的常用方法

来源:互联网 发布:2016库里总决赛数据 编辑:程序博客网 时间:2024/05/17 06:37

getExternalStorageDirectory()

该方法返回主要的外部存储目录。如果这个目录被挂载到电脑上、从设备上取出,那个这么目录在应用内则不可以被访问。我们可以通过getExternalStorageState()这个方法判断主外部存储目录是否可以被访问。

不要被方法中“external”这个描述所迷惑,这个目录应该被理解成具有共享性质的存储空间。这个存储空间具有较大的容量,并且可以被不同的应用程序访问(没有权限的限制)。一般情况这个方法得到的是SD卡的目录,但是也有可能得到的是设备内置存储空间的目录,这个设备内置存储空间不同于内存,是可以被挂载到电脑上成为闪存设备的。

对于多用户的设备,每个用户都对应一个自己的外部存储目录,应用程序只能访问当前登录上的用户的目录。

对于应用私有的文件不应该直接被创建到这个目录下面,而是应该通过Context.getExternalFilesDir()来创建属于应用的文件目录。创建出的路径为:getExternalStorageDirectory()/Android/data/应用包名。这样在卸载程序时,这些文件会同时被删除。对于需要共享出的文件,即可以被其他应用访问的文件应该放到getExternalStoragePublicDirectory(String type)返回的目录下。

向这个目录读、写文件需要分别在AndroidManifest.xml里面声明读、写外部目录的权限。
从Android 4.4(KITKAT)开始,如果应用创建的文件不需要共享出去,仅由该应用使用,则访问getExternalFileDir(String type)和getExternalCacheDir()目录时不需要添加读写权限。

getExternalStorageState()

获取外部存储目录的状态。这些状态时在Environment中被定义的常量,包括:
MEDIA_UNKNOWN:未知状态。
MEDIA_REMOVED:外部存储被移除。
MEDIA_UNMOUNTED:未挂载。
MEDIA_CHECKING:正在检测。
MEDIA_NOFS:外部存储是存在的,但是里面没有内容或者使用了不支持的文件系统。
MEDIA_MOUNTED:外部储存正常挂载。
MEDIA_MOUNTED_READ_ONLY:外部存储正常挂载,只读。
MEDIA_SHARED:挂载为USB储存设备,通过电脑可以访问。
MEDIA_BAD_REMOVAL:没有正常卸载外部储存。
MEDIA_UNMOUNTABLE:外部存储不能被挂载,如文件系统被损坏。

getExternalFileDir(String type)

返回当前应用的私有目录,可以将持久化文件保存到这个目录下。(如果将图片、视频等媒体文件保存到这个目录下,手机中的图片浏览器将不能发现这些文件。)
当应用程序被删除的时候,相应的目录也同样会被删除。

关于参数type:
DIRECTORY_MUSIC,DIRECTORY_PODCAST,DIRECTORY_RINGTONES,DIRECTORY_ALARMS,DIRECTORY_NOTIFICATIONS,DIRECTORY_MOVIES,DIRECTORY_PICTURES,null。可以得到相应类型的子目录

getExternalStoragePublicDirectory(String type)

获得用于存放不同类型文件的目录。通常情况下用户会在这些目录下存放和管理文件。

调用这个方法得到的目录可能还不存在,所以在使用前应该判断一下是否存在,不存在的话需要进行创建。
关于参数type,同上。

0 0
原创粉丝点击