作者:创世魂
● 辅助说明
注意:从安卓10(API29)开始(安卓11彻底禁止),谷歌针对安卓文件系统进行了大修改,逐渐开始禁止软件操作存储卡目录。
其目的是为了规范软件本身文件管理,防止软件滥用文件创建功能和软件隐私保护,防止被第三方不法软件获取软件数据。
所有软件只能操作私有数据目录,对私有目录内容进行读写。
在火山中即使用“取内部私有数据目录()”和“取外部私有数据子目录()”,取出操作目录来进行文件读写操作。
● 本类说明
帮助文档如下图:
本类是对“外部存储空间”(通常指sd卡)中文件或目录的操作支持。
这个“外部存储空间”也就是大家打开手机文件管理器看到的东西,很多软件的部分数据都是存储在这里。
注意:在进行外部存储操作之前,一定要进行检测,利用“外部存储是否可用”方法来进行判断。
至于“外部私有数据根目录”,目前“没有安全的方法”能够限制其它程序访问。
本类目录的大概结构,图内也标注的非常清晰了,这里不再讲述。
● 取外部存储空间根目录
帮助文档如下图:
本方法没有参数,返回一个“文件名类”,本方法取出的路径就是sd卡的根目录。
打开“手机文件管理器”后看到的文件都是存放在这个路径。
不要在这个目录下直接写文件,可以自己创建一个目录,写到创建的目录中。
或者调用“取外部公开数据子目录”方法。
存在这里的数据,程序卸载后数据不会删除,依然存在,而且也可以被其它程序调用。
代码编写:
在“按钮1”被单击下,定义一个类型为“文件名类”的变量,设置参考。
随后使用本方法直接赋值给定义的“文件变量”,然后利用“取文件名”方法赋值给“编辑框”显示。
运行效果如下图:
执行“按钮1”后就会显示sd卡的“根目录”,这个路径下的文件,就是打开“手机文件管理器”看到的文件。
● 取外部公开数据子目录
帮助文档如下图:
本方法和“取外部存储空间根目录”的区别就是,这里多了一个“目录参数”。
如果填写“空文本”则会返回“根目录”。
代码编写如下图:
我们在上一个方法的代码基础上稍微修改。
将“取外部存储空间根目录”方法改成“取外部公开数据子目录”。
参数内随意输入一个目录名,比如:火山软件。
运行效果如下图:
执行“按钮1”,“编辑框1”的内容就会出现sd卡根目录,并且自动添加了参数“火山软件”。
● 取外部私有缓存目录
帮助文档如下图:
本方法同样返回“文件名类”,取出的是当前程序“外部私有缓存”目录。
本目录,程序卸载后会“自动删除”,但是安卓系统不会对其进行监控,也不会主动删除。
安卓系统清理垃圾功能,会扫描此目录。
另外就是缓存的大小,仅仅受限于存储卡的容量。
代码编写如下图:
和前两个方法编写过程一样,写“本方法”名赋值给“文件变量”。
最后“取文件名”赋值给“编辑框1.内容”显示出来。
运行效果如下图:
执行“按钮1”后,完整的“外部缓存目录”就会取出。
可以看到“缓存目录”,也是在“包名目录”内放着。
● 取外部私有数据子目录
帮助文档如下图:
本方法和“取外部公开数据子目录”参数和返回值一模一样,就是最终结果不同。
代码编写如下图:
直接在本方法的参数内,随便输入一个目录名,例如:“文件”。
运行效果如下图:
执行后输出的“目录中”,就可以看到你输入的“参数”,并且这个目录是在“files”目录中。
● 外部存储是否可移除
帮助文档如下图:
顾名思义,就是判断当前“外部存储”是否可以被移除。
可以移除返回真,不可以返回假。
代码编写如下图:
直接用如果判断“本方法”即可。
运行效果如下图(GIF):
点击“按钮1”后可以看到弹出了“不可以”,证明本方法返回“假”,外部存储不可被移除。
● 外部存储是否可用
帮助文档如下图:
顾名思义,就是判断存储“是否可用”,“返回真”表示存储可以用,“返回假”则不可以。
注意:在进行“任何文件操作之前”,“一定要”调用本方法检测一下。
代码编写:
“本方法”和“外部存储是否可移除”代码一致,直接判断本方法“是否”等于真即可。
然后可以弹出对应的信息框。
运行效果如下图:
执行“按钮1”后,通常情况下都会返回“真”。
如果存储卡损坏,或者被其它设备占用,例如:电脑,这些情况下会返回“假”。
● 博客
代码编写如下图:
以上都是文本常量值,这些常量值存储的其实就是一些英文名称。
调用方法“安卓外储文件类.XX”。
“取外部私有数据子目录”和“取内部私有数据文件路径”等方法都可以用。
运行效果如下图:
分别执行“按钮1”和“按钮2”后,对应的路径也都会取出来。
“下载”常量其实就是“Download”,而“图片”常量其实就是“Pictures”。