作者:创世魂
● 辅助说明
注意:从安卓10(API29)开始(安卓11彻底禁止),谷歌针对安卓文件系统进行了大修改,逐渐开始禁止软件操作存储卡目录。
其目的是为了规范软件本身文件管理,防止软件滥用文件创建功能和软件隐私保护,防止被第三方不法软件获取软件数据。
所有软件只能操作私有数据目录,对私有目录内容进行读写。
在火山中即使用“取内部私有数据目录()”和“取外部私有数据子目录()”,取出操作目录来进行文件读写操作。
● 文件操作准备工作
本类需要设计一个如下图所示的APP界面。
从上到下依次是“编辑框1”,“编辑框2”,“按钮1”,“图片框1”
如下图:
我们右键“窗口”选择“添加虚拟方法”,打开“启动类”窗口的所有的“窗口事件”
如下图:
打开后选择“通知_被创建”,点击“添加”。
如下图:
点击后出现下图的“通知_被创建”方法。
1.创建一个“文件名类”的局部变量(名称随意),注意参考属性不要忘记。
2.利用“取外部存储空间根目录”的方法,获取到存储卡的“文件名类”,并且赋值给定义的“文件名类”变量。
3.用定义的“变量”的取文件名方法,把“文件名”类转换成“文本型”的路径形式,这样就可以取出“存储卡”
存储用户数据的路径(也就是打开手机文件管理器的默认路径),把取出来的路径放到“编辑框”显示出来,方便接下来的操作。
注意:建议“取文件名”结尾加上一个“/”,默认取出的“路径”是没有这个“/”的。
再次注意: 软件通常操作的“目录”均是“外部存储空间根目录”。
如果需要操作安卓“内部数据”目录,则手机需要获取“Root权限”才可以操作。
● 创建子目录
如下图:
打开帮助内容,可以看到“创建子目录”有一个“目录名”参数和一个“逻辑”返回值。
如下图:
直接将“编辑框”的内容写入“参数”,用“如果”命令判断是否创建成功。
注意:如果目标“目录”存在也会返回假。
如下图:
调试运行后,我们在“数据路径”后输入要创建的“目录名”,“左图”创建成功,“右图”重复第二次创建“返回假”。
如下图:
打开手机“文件管理器”,也可以看到我们创建的“目录”。
● 读入文本文件方法
如下图:
打开帮助内容可以看到有“两个”参数和一个“文本”返回值。
注意:提前准备一个txt“文本文件”,放入“火山软件”文件夹内。
如下图:
直接读取“编辑框1”作为“参数1”,参数二里面直接放文件对应的“文编编码”即可,最后让“文本内容”赋值给“编辑框2”显示即可。
因我放的"文件编码"是"GBK"的,所以这里我用的是"GBK编码",安卓通常情况下使用的是“UTF-8”编码。
如下图:
运行后“编辑框2”成功读取提前放置的“文本文件”。
● 读入文本文件行方法
如下图:
打开帮助内容,可以看到“读入文本文件行”有两个和“读入文本文件”一样参数,不同之处就是这里的返回值是“文本数组”
从名称可以看出它返回的是“文本文件”内容行的文本数组类。
注意:可以提前在“文本文件”内多输入几行文本。
如下图:
定义“两个”局部变量,保留“读入文本文件”代码,放下对比。
将“读入文本文件行”方法直接赋值给定义的“文本数组变量”。
用定义的变量名称的“取成员数”方法,取出数组数量然后赋值给“成员数”变量,最后“到文本”转换提供给信息框显示。
如下图:
调试运行后效果如下,成功的判断“文本文件”内的行数。
● 读入文件方法
如下图:
打开帮助内容可以看到,该方法只有一个“文本型”的文件名参数和一个“字节数组”返回值。
备注:提前准备一张“图片”放到“火山软件”文件夹内。
如下图:
定义一个“字节”数组变量,然后“读入文件”方法给变量赋值,最后使用“图片框”的“置图片数据”的方法加载“字节变量”到“图片框1”
如下图:
编译运行后,成功取出了提前放好的一张“png”图片。
● 复制文件方法
如下图:
打开帮助内容可以看到“复制文件”有两个“文本参数”和一个是否覆盖的“逻辑参数”,复制成功返回“真”,失败返回“假”
如下图:
参数“1和2”直接填写“编辑框1和2”的内容,“参数3”这里就填写“真”(根据实际需求正确填写)
如下图:
运行后在“编辑框2”也放上存储卡“路径”,并且输入上对应的目录名和“复制后文件名”。
“左图:”提示复制成功。“右图:”文件管理器内也成功显示。
● 删除文件方法
如下图:
打开帮助内容可以看到“删除文件”方法只有一个“文本参数”和一个“逻辑返回值”。
“注意:”红框内的提示,如果要“删除目录”,必须保证“目录”内是“空的”。
如下图:
代码编写也很简单,直接把“编辑框1”放到“参数1”内,运行后在“用户数据目录”的基础上增加你想要删除的“目录”或者“文件名”即可。
如下图:
运行后我们可以删除掉,刚才的“复制版文本文件”,“左图”提示删除成功,“右图”文件管理器也成功消失。
如下图:
如果我们删除“火山软件”目录,则会提示“删除失败”,因为“目录内存在内容”。
● 文件是否存在方法
如下图:
打开帮助内容我们可以看到有一个“文本参数”和一个“逻辑”返回值。可以判断“文件”或者“目录”是否存在。
如下图:
代码编写,直接将“编辑框1”的内容放到“参数1”中,然后用“如果”命令判断该方法返回的“逻辑值”,如果等于“真”则提示“存在”,否则相反。
如下图:
左图:判断“火山软件”目录会提示“存在”。右图:我们随便输入一个名字,就会提示“不存在”。
● 写出文本文件方法
如下图:
打开帮助内容可以看到“写出文本文件”有两个“文本参数”,一个是否覆盖的“逻辑参数”和一个“文本编码参数”,最后也是返回的“逻辑值”。
如下图:
代码编写非常简单,直接“编辑框1和2”的内容写到“参数1和2”,覆盖填写“真”。
要注意的是,最后的“编码”建议填写“UTF8编码”。
还有,必须保证“目录正确”并且“目录存在”才能成功“写出文本文件”。
如下图:
左图:路径正确“成功写出”。右图:输入了一个“不存在”的目录,会“无法保存”。
如下图:
打开文件管理器就可以看到我们新写的文件了。
● 写出文本文件行方法
如下图:
打开帮助我们可以看到该方法和“写出文本文件”一样,有四个参数,不同之处就是这里保存的是“文本数组类”。
如下图:
我们这里可以用“读入文本文件行”的方法,来读取一个“文件数组类”的变量。
然后将定义的变量填入“写出文本文件行”的“参数2”中(这里的编码,必须和上面的一致)。
最后用“如果”来判断“写出文本文件”的“返回值”即可。
如下图:
左图:提示成功。右图:文件管理器也成功显示。
● 写出文件方法
如下图:
打开帮助内容可以看到“写出文件”方法只有“三个参数”和一个“逻辑返回值”。
如下图:
定义一个“字节数组”变量,使用“文本到字节数组”方法,将“编辑框2”的内容转换赋值给定义的“字节数组变量”。
“写出文件”参数一直接依然还是“编辑框1”的内容,参数二放入“字节数组变量”,“参数三”根据实际需求填写。
如下图:
左图:执行后“保存”成功。右图:文件管理器内也看到了对应的文件。
● 重命名文件方法
如下图:
打开帮助内容可以看到“重命名”有“两个参数”,并且也同样支持重命名“文件和目录”。
如下图:
代码编写,直接将“编辑框1”和“编辑框2”的内容填入参数即可,实际应用过程中,填入自己需要“重命名”的文件或者目录的路径。
如下图:
左图:将“火山软件”目录,成功的重命名为“火山软件开发平台”
右图:文件管理器内也发生改变,证明重名成功。