开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 40940|回复: 9
收起左侧

[其他教程] 【火山教程】安卓文件操作实例讲解(安卓基本类)

[复制链接]
结帖率:94% (66/70)
发表于 2018-9-3 14:38:03 | 显示全部楼层 |阅读模式   四川省成都市
本帖最后由 创世魂 于 2018-12-25 09:51 编辑

安卓基本类说明:
在安卓中有两种类,一个是基于java的,例如:文本操作属于“java.lang.String”   (严格来说这个叫包名)
另外一种是安卓类,例如照相机:android.hardware.Camera (严格来说这个也叫包名)
安卓文件操作实例讲解(建议依次仔细看)
作者:创世魂

● 帮助文档查看

打开“项目-->程序结构查看器(F2)”
打开“系统库-->安卓基本-->文件操作”,就可以看到所有的关于安卓基本中所有的“文件操作”,右侧可以查看详细的帮助内容和说明。

● 准备一个界面

界面如下图:
打开窗口设计器,放两个“按钮”,分别起名“按钮1”“按钮2”
最后在放一个“编辑框1”其组件宽度类型设置为“匹配父组件宽度”
保存布局后,右键“按钮”,添加“按钮被单击事件接收方法”,添加完毕后如下图所示。


一、安卓内储文件类
● 本类说明


本类提供了,用户程序“私有目录和文件”的操作,这个私有目录是当前app的目录,其它app无法访问。
目录内可以存放一些“缓存文件”或者一些重要的“数据文件”
比如:“账号密码”等重要的数据,想要保存又不想被其它app看到,就可以使用本类操作。
私有目录大致结构如图所示。
“三个”类别:"私有数据文件子目录","私有缓存子目录"和"私有子目录"。
私有数据文件子目录:你可以在里面放app的账号密码一类的。
私有缓存子目录:假如app有加载网络图片的功能,那么那些图片下载后可以临时放到这个缓存子目录中。
私有子目录:你可以新建自定义目录,放你想要放的东西。

调用方式
本类是“全局类”,有两种调用方式,如下图。
第一:直接输入“方法名”
第二:“类名”“方法名”
注意:只有“全局类”才可以“直接输入方法名”调用。


● 打开内部私有数据文件写

帮助文档如下图:
可以看到有“两个”参数,和一个“文件输出流”的返回值。
如果指定参数“文件名”不存在,将自动创建该文件。
可以利用“文件输出流”对象,来进行“写文件”操作。
注意:“文件输出流”不使用后记着关闭。

代码编写如下图:
首先依然是指定“来源对象==按钮1”
随后定义一个类型为“文件输出流”的变量,设置参考。
利用“本方法”赋值给定义的“文件流”变量,参数随便输入一个“文件名”
随后利用文件流“写数据2”方法,写一串“字节数组”数据到文件内。
判断是否写入成功后,最后调用“关闭”方法,关闭“文件流”

运行效果如下图:
执行“按钮1”后提示“保存成功”
如何读取“数据”数据看“下一个方法”


● 打开内部私有数据文件读

帮助文档:
可以看到只有一个“文本参数”和一个“文件输入流”返回值。
本方法的作用是用来读取“打开内部私有数据文件写”写入的私有数据。
注意:不使用流对象后一定要关闭。
另外,参数只能填写纯粹的文件名,不能包含路径。

代码编写如下图:
我们只需要在原来代码的基础上“稍作修改”,就可以“读取私有数据”
“文件类”类型改为“文件输入流”,并且额外增加“三个变量”备用。
分别是:长整数变量,字节数组变量,状态类变量。

利用本方法打开指定“文件名”赋值给“文件流”变量。
随后利用“取内部私有数据文件路径”方法,取这个文件的“文件尺寸”,赋值给长整数变量。
然后利用这个“文件尺寸”“字节数组操作.创建()”方法,创建一个指定“成员数”的数组,并赋值给定义的“数组变量”
注意要进行“强转整数”操作。

随后,利用“文件流.读入数据2()”方法,将“字节数组”“状态对象”两个变量写入。
然后利用“字节数组到文本”方法,将“字节数组”变量填入,最后赋值给“编辑框”显示。
最后判断“状态对象”是否成功,然后关闭“文件流”

运行效果如下图:
可以看到“按钮1”被点击后,“打开内部私有数据文件写”保存的数据被成功取出。


● 打开内部私有子目录


帮助文档如下图:
可以看到有一个“文本参数”和一个“文件名类”的返回值,打开失败返回“空对象”
如果输入的“目录不存在”,则会“自动创建”
点击查看文件名类的具体操作。

代码编写如下图:
首先创建一个类型为“文件名类”的变量,设置参考。
随后利用本方法,随便打开一个子目录,并且赋值给定义“文件变量”
最后我们就可以利用“取文件名()”方法,将整个私有子目录的完整路径取出。

运行效果如下图:
执行“按钮1”后,“编辑框1”内就会显示如下内容。
中间有一段文本是你的“程序包名”,包名后面的是“私有数据子目录”,我们可以看到自动添加了一个“app_”开头的标识。

● 取内部私有缓存目录


帮助文档如下图:
可以看到只有一个“文件名类”的返回值。
顾名思义,就是取出“私有缓存目录”,这个目录内可以放程序的一些“临时文件”
注意:本目录的内容,可能随时面临被系统删除的风险,建议开发app的时候,设置一个合理的容量,超过这个容量后就自行删除。
也可以给app设置一个“清理缓存”的功能,缓存超过一定容量后提醒“软件用户”清理。

代码如下图:
依然是创建一个类型为“文件名类”的变量,设置参考。
随后用“本方法”赋值给定义的“文件变量”
最后用“取文件名”方法取出,赋值给“编辑框1”显示。

运行效果如下图:
执行“按钮1”后,就可以看到“编辑框1”显示了完整的缓存路径,最后的“cache”就是缓存目录的名称。

● 取内部私有数据目录


帮助文档如下图:
可以看到本方法和“取内部私有缓存目录”一样,只有一个“文件名类”返回值。
顾名思义,就是“取出私有数据目录”的完整路径。

代码编写如下图:
直接照搬“取内部私有缓存目录”代码,方法名改成“取内部私有数据目录”即可。
最后依然是赋值给“编辑框1”显示。

运行效果如下图:
点击“按钮1”后,编辑框1就会显示完整的“私有数据目录”
“files”就是私有数据目录的名称。

● 取内部私有数据文件列表


帮助文档如下图:
注意,本方法是“取私有数据文件”“文件名”数组,并不是“文件目录”数组。

代码编写:
定义一个类型为“文本型[]”“文本数组”变量。
然后定义一个类型为“整数”“循环变量”
用本方法取出来数组列表,赋值给定义的“文本数组”
然后可以利用“循环”语句,将数组内的成员取出。
最后在“循环语句”内利用“编辑框1.添加内容”方法,将取出的成员添加到“编辑框”显示出来。

运行效果图(GIF):
文档最开始的时候我们用“打开内部私有数据文件写”方法,创建的“数据文件.txt”,这个时候就会取出。
因为我们只写过一个文件,所以这里也只会显示一个。

● 取内部私有数据文件路径


帮助文档如下图:
顾名思义,就是取出“私有数据文件”的完整路径,返回的是“文件名”类。
参数就填写你要取的“文件名”即可。

代码编写如下图:
添加一个“文件名类”的局部变量,设置参考。
给本方法的参数写“数据文件.txt”,然后赋值给“文件变量”
最后用“取文件名”方法,取出后赋值给“编辑框1.内容”写属性。

运行效果如下图:
执行“按钮1”后,编辑框内就会显示完整的文件路径,并且可以看到“数据文件”所在的目录是“files”

● 删除内部私有数据文件


帮助文档如下图:
顾名思义,就是“删除”一个私有目录内的指定数据文件。
参数内直接填写想要删除的“文件名”即可。
成功返回“真”,失败返回“假”,目标文件不存在返回“假”

代码编写如下图:
点击“按钮1”判断本方法删除,参数内输入一个不存在的数据文件。
点击“按钮2”的时候则输入一个存在的文件。

运行效果(GIF):
点击"按钮1"目标文件不存在,会返回“失败”
点击"按钮2"成功将“数据文件.txt”删除,再次点击会返回“失败”


二、安卓配置信息
● 取安卓目录


帮助文档如下图:
左图:可以看到本方法有一个“安卓目录类型”的参数,返回一个“文件名类”
参数调用方法“安卓目录类型.XXX”
右图:安卓目录类型的具体“常量值”
可以看到三个常量,分别取出安卓系统“缓存目录”“数据目录”“根目录”

代码编写如下图:
定义三个“文本型”变量,分别对应三个目录。
用本方法取这三个目录,随后直接在本方法后继续调用“取文件名”,取出“完整路径”赋值给“文本变量”
最后把三个变量加起来(可用“\n”换行符隔开),赋值给“编辑框1”显示。

运行效果(GIF):
执行“按钮1”后,三个文件目录都会被取出。


三、安卓外储文件类
● 本类说明


帮助文档如下图:
本类是对“外部存储空间”(通常指sd卡)中文件或目录的操作支持。
这个“外部存储空间”也就是大家打开手机文件管理器看到的东西,很多软件的部分数据都是存储在这里。
注意:在进行外部存储操作之前,一定要进行检测,利用“外部存储是否可用”方法来进行判断。
至于“外部私有数据根目录”,目前“没有安全的方法”能够限制其它程序访问。
本类目录的大概结构,图内也标注的非常清晰了,这里不再讲述。


● 取外部存储空间根目录

帮助文档如下图:
本方法没有参数,返回一个“文件名类”,本方法取出的路径就是sd卡的根目录。
打开“手机文件管理器”后看到的文件都是存放在这个路径。
不要在这个目录下直接写文件,可以自己创建一个目录,写到创建的目录中。
或者调用“取外部公开数据子目录”方法。
存在这里的数据,程序卸载后数据不会删除,依然存在,而且也可以被其它程序调用。

代码编写:
“按钮1”被单击下,定义一个类型为“文件名类”的变量,设置参考。
随后使用本方法直接赋值给定义的“文件变量”,然后利用“取文件名”方法赋值给“编辑框”显示。

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


● 取外部公开数据子目录


帮助文档如下图:
本方法和“取外部存储空间根目录”的区别就是,这里多了一个“目录参数”
如果填写“空文本”则会返回“根目录”

代码编写如下图:
我们在上一个方法的代码基础上稍微修改。
“取外部存储空间根目录”方法改成“取外部公开数据子目录”
参数内随意输入一个目录名,比如:火山软件。

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

● 取外部私有缓存目录

帮助文档如下图:
本方法同样返回“文件名类”,取出的是当前程序“外部私有缓存”目录。
本目录,程序卸载后会“自动删除”,但是安卓系统不会对其进行监控,也不会主动删除。
安卓系统清理垃圾功能,会扫描此目录。
另外就是缓存的大小,仅仅受限于存储卡的容量。

代码编写如下图:
和前两个方法编写过程一样,写“本方法”名赋值给“文件变量”
最后“取文件名”赋值给“编辑框1.内容”显示出来。

运行效果如下图:
执行“按钮1”后,完整的“外部缓存目录”就会取出。
可以看到“缓存目录”,也是在“包名目录”内放着。

● 取外部私有数据子目录


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

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

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


● 外部存储是否可移除


帮助文档如下图:
顾名思义,就是判断当前“外部存储”是否可以被移除。
可以移除返回真,不可以返回假。

代码编写如下图:
直接用如果判断“本方法”即可。

运行效果如下图(GIF):
点击“按钮1”后可以看到弹出了“不可以”,证明本方法返回“假”,外部存储不可被移除。


● 外部存储是否可用


帮助文档如下图:
顾名思义,就是判断存储“是否可用”“返回真”表示存储可以用,“返回假”则不可以。
注意:在进行“任何文件操作之前”“一定要”调用本方法检测一下。

代码编写:
“本方法”“外部存储是否可移除”代码一致,直接判断本方法“是否”等于真即可。
然后可以弹出对应的信息框。

运行效果如下图:
执行“按钮1”后,通常情况下都会返回“真”
如果存储卡损坏,或者被其它设备占用,例如:电脑,这些情况下会返回“假”


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

代码编写如下图:
以上都是文本常量值,这些常量值存储的其实就是一些英文名称。
调用方法“安卓外储文件类.XX”
“取外部私有数据子目录”“取内部私有数据文件路径”等方法都可以用。

运行效果如下图:
分别执行“按钮1”“按钮2”后,对应的路径也都会取出来。
“下载”常量其实就是“Download”,而“图片”常量其实就是“Pictures”


四、程序配置表修改器
● 本类说明


帮助说明:
“程序配置表”可以理解为,此表用来保存一些较短的“文本数据”或者“其它类型”的数据。
当程序卸载后,数据随之删除,如果不卸载将一直存在。
需要通过“程序配置表.取修改器()”方法来获取到“修改器”,获取修改器后才可以进行接下来的操作。
“程序配置表”则可以通过“取程序配置表()”方法获取。
本类共有:8个方法。


● 置文本配置项
● 置逻辑型配置项
● 置小数配置项
● 置长整数配置项
● 置整数配置项
● 提交

“置文本配置项”“置整数配置项”用法一致,这里单独举例“置文本配置项”
“提交”必备的关联方法,这里统一讲解。

“置文本配置项”帮助:
本方法支持动态调用,有三个参数。
参数1:要操作“程序配置表修改器”
参数2:要配置项名称。
参数3:要保存的数据。
注意:写入数据后一定要调用“提交”方法,这样操作才能生效。

"提交"帮助:
无论是“删除”还是“写新数据”,都需要调用本方法来实现操作。
只有一个“程序配置表修改器”对象参数,和一个“逻辑”返回值。

代码编写如下图:
需要定义两个变量,一个类型为“程序配置表”,另外一个类型为“程序配置表修改器”
两个变量都需要设置“参考”
随后可以用“取程序配置表”方法取出配置表赋值给定义的“配置表”变量。
接下来利用“配置表.取修改器()”方法,取出修改器对象赋值给定义的“修改器变量”
然后利用“置文本配置项”写入数据,最后调用“提交”方法判断是否成功即可。
本方法现在的调用模式是“变量形式调用”,这属于“动态调用”,动态调用中“参数1”必须忽略不写。
接下来不再重复“动态调用”“注意事项”

运行效果如下图:
执行“按钮1”后就会提示“保存成功”


● 置文本集配置项

帮助文档如下图:
本方法支持动态调用,可以看到有“三个”参数,没有返回值。
参数1:要操作的“程序配置表修改器”对象。
参数2:要保存的“配置项”名称。
参数3:要写入的“文本数据集”对象。
注意:本操作依然需要使用“提交”方法才会生效。

代码编写如下图:
备注:图太长无法完整截取,上下两张图是一起的。

“按钮1”被单击,定义两个变量,设置参考。
一个类型为“程序配置表修改器”,另外一个类型为“文本数据集类”
利用“取程序配置表().取修改器()”方法,取出修改器对象,赋值给“修改器变量”
随后利用“文本哈希集类.创建()”方法,参数填写想要创建的“成员数”,我这里填写“2”,创建“两个”成员。
创建成员数后,赋值给定义的“文本集”变量。

随后用“如果”命令,去判断“文本集.添加成员()”是否添加成功。
如果“添加成功”继续执行一个“添加成员()”方法。
随后利用“置文本集配置项”方法写配置项。
动态调用“忽略参数1”,直接写“参数2”配置项名称,随后将“文本集”变量放入“参数3”
最后调用“提交”方法,用“如果”命令判断是否提交成功。

随后判断“按钮2”被点击,作用取出保存的“文本集配置项”
随后定义“三个”变量,设置参考。
三个“变量类型”分别为“程序配置表”“文本数据集类”“文本枚举器类”
随后利用“取程序配置表()”方法,赋值给“配置表”变量。
利用配置表“取文本集配置项()”方法,取出“文本数据集类”赋值给定义的“文本集”变量。
参数填写“置文本集配置项”时填写的“账号”,只有填写的“文本参数相同”才能取出。
然后利用“文本集”变量“创建枚举器()”赋值给定义的“文本枚举”变量。
随后利用“循环”方法将“枚举器”内的成员取出。
参数1:省略。
参数2:填写"文本集.取成员数()"。
循环语句内,利用“编辑框1.添加内容()”方法,将获取到的成员,添加到编辑框内。
“文本枚举”变量的“到下一个成员()”方法可以获取“成员内容”


运行效果如下图(GIF):
可以看到点击“按钮1”后提示信息框“保存成功”
随后我们执行“按钮2”,可以看到保存的成员全部取出。


● 删除配置项

帮助文档如下图:
可以看到有两个参数,没有返回值,依然需要调用“提交”方法来是实现“删除”
参数1:填写程序配置表修改器对象,如果动态调用,参数可以忽略。
参数2:填写要删除的“配置项”名称。
本方法也支持动态调用。

代码编写如下图:
点击“按钮1”下,我们写一个“配置项”
我们一个“按钮2”被点击,在这里去“删除配置项”
定义好前面的“修改器”变量后,下面直接调用“删除配置项”方法即可。
参数内填写要删除的配置项名称,例如:“账号”
最后依然是“提交”判断。

运行效果如下图(GIF):
点击“按钮1”后,提示“保存成功”
随后点击“按钮2”,重复点击了“两次”依然提示“删除成功”
也就证明,即使是目标“配置项”不存在,“删除时”也依然会返回“真”


五、程序配置表
● 本类说明

帮助文档:
本类的主要作用是用来“取配置项”,需要用到一个“应用程序.取程序配置表()”方法。
本类总共有“8个”方法。


● 配置项是否存在

帮助文档如下图:
可以看到有两个参数,一个“程序配置表对象”参数,一个“文本型”参数。
本方法的作用就是判断指定的“配置项”是否存在,存在“返回真”,不存在“返回假”
本方法支持动态调用。

代码编写如下图:
首先定义类型为“程序配置表”的变量,设置参考。
随后利用“应用程序.取程序配置表()”方法取出配置表,赋值给“配置表变量”
最后利用“本方法”判断“账号”是否存在,然后弹出对应信息框。

运行效果:
因我们在“删除配置项”方法中,已经将“账号”删除,所以这里执行后会弹出“不存在”


● 取修改器

有两个参数,返回“修改器”对象。
参数1:填写要操作的程序配置表。
参数2:有默认值,可以省略,通常情况下省略即可。
使用方法已经在“置文本配置项”方法中演示了调用过程,这里不再演示。


● 取文本配置项
● 取逻辑型配置项
● 取长整数配置项
● 取整数配置项
● 取小数配置项

以上五个方法,用法一致,这里举例“取文本配置项”
“取文本配置项”帮助文档:
方法支持动态调用,有三个参数和一个文本返回值。
参数1:提供要操作的配置表对象,动态调用的时候本参数可以忽略。
参数2:提供要“取配置项”的名称。
参数3:如果配置项“不存在”或者“不匹配”类型,将返回“参数3”的内容,默认为“空文本”

代码编写如下图:
“按钮1”被单击下,我们保存一个“密码”配置项。
随后在“按钮2”被单击下,我们定义一个“程序配置表”的变量,设置参考。
然后利用“应用程序.取程序配置表”方法赋值给变量。
最后用本方法取“密码”配置项,赋值给“编辑框1.内容”显示出来。

运行效果如下图(GIF):
首先点击“按钮1”写密码,提示“保存成功”
接下来点击“按钮2”密码也成功在“编辑框”显示。


● 取文本集配置项


帮助文档如下图:
本方法支持动态调用,可以看到有“两个参数”和一个“文本数据集类”的返回值。
参数1:填写要操作的“程序配置表”
参数2:填写要读取的“配置项”名称。
注意:如果“类型不匹配”或者“配置项不存在”,将会返回“空对象”
具体代码编写看置文本集配置项



本教程已经录入火山官方教程:http://doc.voldp.com/


发表于 2023-5-24 12:19:34 | 显示全部楼层   湖北省武汉市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2020-10-19 22:51:53 | 显示全部楼层   重庆市重庆市
666666666666666
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2020-9-26 18:12:10 | 显示全部楼层   四川省成都市
我想让日历的农历显示在阳历右侧且农历文字为竖排排列,怎么实现呢,大佬!
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2020-9-26 18:07:59 | 显示全部楼层   四川省成都市
请问怎么用画笔实现写竖排文字?
回复 支持 反对

使用道具 举报

发表于 2020-4-16 10:28:13 | 显示全部楼层   河北省保定市
写的真好,看了这个教程终于明白怎么回事了。谢谢!
回复 支持 反对

使用道具 举报

发表于 2019-10-3 21:51:15 | 显示全部楼层   浙江省杭州市
这几天正在学习,看了楼主的教材终于有头绪了,谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-12-27 19:18:42 | 显示全部楼层   湖南省邵阳市
学习学习,还不错
回复 支持 反对

使用道具 举报

结帖率:83% (5/6)
发表于 2018-12-1 21:25:23 | 显示全部楼层   福建省宁德市
好长。学习
回复 支持 反对

使用道具 举报

结帖率:95% (21/22)

签到天数: 1 天

发表于 2018-9-3 14:47:40 | 显示全部楼层   内蒙古自治区呼和浩特市

回帖奖励 +50 枚 精币

学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表