本帖最后由 创世魂 于 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:填写要读取的“配置项”名称。 注意:如果“类型不匹配”或者“配置项不存在”,将会返回“空对象”。
|