安卓外储文件类操作实例讲解

作者:创世魂

 

● 辅助说明

注意:从安卓10(API29)开始(安卓11彻底禁止),谷歌针对安卓文件系统进行了大修改,逐渐开始禁止软件操作存储卡目录。

其目的是为了规范软件本身文件管理,防止软件滥用文件创建功能和软件隐私保护,防止被第三方不法软件获取软件数据。

所有软件只能操作私有数据目录,对私有目录内容进行读写。

在火山中即使用“取内部私有数据目录()”“取外部私有数据子目录()”,取出操作目录来进行文件读写操作。

 

● 本类说明

 

帮助文档如下图:

本类是对“外部存储空间”(通常指sd卡)中文件或目录的操作支持。

这个“外部存储空间”也就是大家打开手机文件管理器看到的东西,很多软件的部分数据都是存储在这里。

注意:在进行外部存储操作之前,一定要进行检测,利用“外部存储是否可用”方法来进行判断。

至于“外部私有数据根目录”,目前“没有安全的方法”能够限制其它程序访问。

本类目录的大概结构,图内也标注的非常清晰了,这里不再讲述。

 

 

● 取外部存储空间根目录

 

帮助文档如下图:

本方法没有参数,返回一个“文件名类”,本方法取出的路径就是sd卡的根目录。

打开“手机文件管理器”后看到的文件都是存放在这个路径。

不要在这个目录下直接写文件,可以自己创建一个目录,写到创建的目录中。

或者调用“取外部公开数据子目录”方法。

存在这里的数据,程序卸载后数据不会删除,依然存在,而且也可以被其它程序调用。

 

代码编写:

“按钮1”被单击下,定义一个类型为“文件名类”的变量,设置参考。

随后使用本方法直接赋值给定义的“文件变量”,然后利用“取文件名”方法赋值给“编辑框”显示。

 

运行效果如下图:

执行“按钮1”后就会显示sd卡的“根目录”,这个路径下的文件,就是打开“手机文件管理器”看到的文件。

 

 

● 取外部公开数据子目录

 

帮助文档如下图:

本方法和“取外部存储空间根目录”的区别就是,这里多了一个“目录参数”

如果填写“空文本”则会返回“根目录”

 

代码编写如下图:

我们在上一个方法的代码基础上稍微修改。

“取外部存储空间根目录”方法改成“取外部公开数据子目录”

参数内随意输入一个目录名,比如:火山软件。

 

运行效果如下图:

执行“按钮1”“编辑框1”的内容就会出现sd卡根目录,并且自动添加了参数“火山软件”

 

● 取外部私有缓存目录

 

帮助文档如下图:

本方法同样返回“文件名类”,取出的是当前程序“外部私有缓存”目录。

本目录,程序卸载后会“自动删除”,但是安卓系统不会对其进行监控,也不会主动删除。

安卓系统清理垃圾功能,会扫描此目录。

另外就是缓存的大小,仅仅受限于存储卡的容量。

 

代码编写如下图:

和前两个方法编写过程一样,写“本方法”名赋值给“文件变量”

最后“取文件名”赋值给“编辑框1.内容”显示出来。

 

运行效果如下图:

执行“按钮1”后,完整的“外部缓存目录”就会取出。

可以看到“缓存目录”,也是在“包名目录”内放着。

 

● 取外部私有数据子目录

 

帮助文档如下图:

本方法和“取外部公开数据子目录”参数和返回值一模一样,就是最终结果不同。

 

代码编写如下图:

直接在本方法的参数内,随便输入一个目录名,例如:“文件”

 

运行效果如下图:

执行后输出的“目录中”,就可以看到你输入的“参数”,并且这个目录是在“files”目录中。

 

 

● 外部存储是否可移除

 

帮助文档如下图:

顾名思义,就是判断当前“外部存储”是否可以被移除。

可以移除返回真,不可以返回假。

 

代码编写如下图:

直接用如果判断“本方法”即可。

 

运行效果如下图(GIF):

点击“按钮1”后可以看到弹出了“不可以”,证明本方法返回“假”,外部存储不可被移除。

 

 

● 外部存储是否可用

 

帮助文档如下图:

顾名思义,就是判断存储“是否可用”“返回真”表示存储可以用,“返回假”则不可以。

注意:在进行“任何文件操作之前”“一定要”调用本方法检测一下。

 

代码编写:

“本方法”“外部存储是否可移除”代码一致,直接判断本方法“是否”等于真即可。

然后可以弹出对应的信息框。

 

运行效果如下图:

执行“按钮1”后,通常情况下都会返回“真”

如果存储卡损坏,或者被其它设备占用,例如:电脑,这些情况下会返回“假”

 

 

● 博客
● 铃声
● 闹钟
● 摄像
● 通知
● 图片
● 下载
● 音乐
● 影片

 

代码编写如下图:

以上都是文本常量值,这些常量值存储的其实就是一些英文名称。

调用方法“安卓外储文件类.XX”

“取外部私有数据子目录”“取内部私有数据文件路径”等方法都可以用。

 

运行效果如下图:

分别执行“按钮1”“按钮2”后,对应的路径也都会取出来。

“下载”常量其实就是“Download”,而“图片”常量其实就是“Pictures”