详解Android文件存储

2019-12-10 19:22:13王旭
Android存储空间包括内部存储空间(Internal Storage)和外部存储空间(External Storage),本文分别对Android内部存储空间(Internal Storage)和Android外部存储空间(External Storage)做了详细讲解  

摘要

其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理。根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念。

其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理。根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念。

相对路径和绝对路径

在java中,关于相对路径和绝对路径是这样解释的,如果你很熟悉这部分以下灰色文字可以跳过:

绝对路径是指书写文件的完整路径,例如d:javaHello.java,该路径中包含文件的完整路径d:java以及文件的全名Hello.java。使用该路径可以唯一的找到一个文件,不会产生歧义。但是使用绝对路径在表示文件时,受到的限制很大,且不能在不同的操作系统下运行,因为不同操作系统下绝对路径的表达形式存在不同。

相对路径是指书写文件的部分路径,例如testHello.java,该路径中只包含文件的部分路径test和文件的全名Hello.java,部分路径是指当前路径下的子路径,例如当前程序在d:abc下运行,则该文件的完整路径就是d:abctest。使用这种形式,可以更加通用的代表文件的位置,使得文件路径产生一定的灵活性。

在Eclipse项目中运行程序时,当前路径是项目的根目录,例如工作空间存储在d:javaproject,当前项目名称是Test,则当前路径是:d:javaprojectTest。在控制台下面运行程序时,当前路径是class文件所在的目录,如果class文件包含包名,则以该class文件最顶层的包名作为当前路径。

这是java在多数操作系统中这样操作,很显然是要我们尽可能的使用相对路径,但是在安卓中,其实多数情况下我们都是使用的绝对路径。为什么呢?注意上面说到相对路径是以当前项目所在路径为当前路径,但在安卓中我们是不可能在项目所在路径目录下做任何操作的,因为普通java中我们的项目创建于服务器(pc也算是服务器),运行于服务器,我们当然能在服务器操作自己的文件目录。但是安卓开发中,我们的项目一般是创建于自己工作的电脑,而运行于手机,既然apk已经运行于手机了,那项目就已经部署到手机上了,应该以apk在手机上的位置来确定相对路径,但我们好像们没有办法操作这个路径的,因为apk是在system目录下,就算可以操作,在这个目录下存取文件也是没有意义的,比如我写一个相册程序,图片肯定是放在外部存储中,而如果我要保存一个应用的一些设置数据,我是放在内部存储的data目录下,因此其实在安卓文件管理中,我们都是在操作绝对路径。