文件访问类操作实例讲解

作者:创世魂

 

● 辅助说明

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

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

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

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

 

● 首先需要了解一下“状态类”“文件打开方式”

 

“状态类”如下图:

打开“状态类”帮助内容,可以看到它有“四个”常量,每个常量代表不同的意思,具体看红色箭头指的位置说明。

常量调用方式“类名.”+“常量名”即可。

 

 

“文件打开方式”如下图:

本类也有“四个常量”,具体作用和说明看图上的文字说明。

 

 

 

● 创建方法

 

如下图:

打开帮助内容,可以看到它有“两个参数”,其中一个参数正是上面提到的“文件打开方式”

本方法的返回值则是“文件访问类”

顾名思义:本方法的作用就是创建一个“文件访问类”对象,然后根据这个对象进行各种各样的操作。

 

 

如下图:

代码编写也很简单。

“参数一”“参数二”根据自己的“实际需求”填写自己需要的内容。

注意:“文件打开方式”后面的小数点不要忘记了。

 

 

 

● 创建2方法

 

如下图:

可以看到它和“创建”不同之处在于,本方法的“参数一”“文件名类”

 

 

如下图:

代码编写的时候,将“要操作的文件”创建成“文件名类”

最后把定义的“文件名类”变量,放入“参数1”即可,这就就可以创建一个“文件访问类”出来。

 

 

 

● 读入数据方法

 

如下图:

可以看到有“五个”参数。

参数一:要操作的“文件访问类”对象。

参数二:用来存储数据的“字节数组”

参数三:从“字节数组”的哪个位置开始存数据。

参数四:从“文件对象”里面读取多长的数据。

参数五:保存最终读取状态。

 

 

如下图:

本代码编写起来较为复杂。

例如:我们要读取一个图片需要这么做。


第一:定义四个变量。

1.文件尺寸变量:用来存储要读入的“文件尺寸”

2.文件访问类变量:存储“文件访问类”

3.状态对象:保存最终“状态”

4.字节数组:临时存放要读入的“文件字节”数组。


第二:首先需要用“文件名类”“创建”方法,取出“文件尺寸”

(无需定义“文件名类”变量,直接在“创建”最后输入“点”“方法名”即可),最后赋值给“尺寸”变量。

第三:用“文件访问类”创建一个“文件访问类”变量,因是读入图片,所以“打开方式”选择“只读”就可以了。

第三:我们需要将定义的“字节数组”,创建一个“成员数”(可以理解为容量),这个容量数据就是“强转整数”后的“文件尺寸”


第四:“读入数据”填写,因为是动态调用,所以“参数一”忽略不写,也“不用逗号”分隔。

参数2:写定义的“字节数组”变量

参数3:完整的读入一个图片,所以这里写“0”

参数4:输入定义“文件尺寸”变量。

参数5:输入定义的“状态”变量


如果所有操作结束后,注意一定要使用“关闭”方法,将创建的“文件访问”对象关闭。

最后用“图片框”“置图片数据”方法将“字节数组”载入进来。

 

运行后如下图:

成功读取“移动后.png”图片,读取状态也提示“成功”

 

 

 

● 读入数据2方法

 

如下图:

本方法和“读入数据”的区别就是,本方法少了位置和长度参数。

 

 

如下图:

虽然参数少了“两个”,但是代码编写也和“读入数据”基本一致。

唯一不同之处也就是“读入数据2”少写两个参数(红框内),“字节数组”后直接就是“状态对象”

 

运行后如下图:

“读入数据”一样,成功读取。

 

 

 

● 关闭方法

 

如下图:

顾名思义,就是关闭一个创建的“文件访问类”对象。

当一个“文件访问”操作结束后,必须使用本方法关闭。

 

 

 

● 关闭方法

 

如下图:

顾名思义,就是关闭一个创建的"文件访问类"对象。

当一个"文件访问"操作结束后,必须使用本方法关闭。

 

 

 

● 取当前读写位置方法

 

如下图:

顾名思义,判断一个文件的当前“读写”到哪个位置了,返回一个长整数值。

失败会返回给“状态类”对象。

 

 

如下图:

代码编写很简单,创建两个变量。

创建“文件访问类”对象,然后有本方法去“读取”文件对象的“读写位置”

最后“到文本”赋值给“编辑框2”显示出来。

 

 

运行后如下图:

因当前没有对“移动后.png”进行任何读写操作,所以“返回0”

 

 

 

● 取输出对象方法

 

如下图:

作用就是利用创建的“文件访问类”返回一个“数据输出类”来进行“写文件”操作。

 

 

如下图:

例如:我们保存“编辑框2”的内容到“编辑框1”的路径,需要这么写。

创建“三个”如下图所示的变量(注意参考)。

创建“文件访问类”然后用本方法,赋值给“数据输出类”变量。

最后用“数据输出类”的方法“写UTF文本”“编辑框2”的内容,状态对象写入到第二个参数即可。

 

 

如下图:

左图:运行结果成功写出。

右图:文件管理器内也看到了对应的文件。

 

      

 

 

● 取输入对象方法

 

如下图:

本方法和“取输出对象”基本一样,不同之处就是本方法返回的是“数据输入类”

利用“数据输入类”可以进行“读取数据”操作。

 

 

如下图:

代码编写和“取输出对象”基本没区别,就是将“数据输出类”改成了“数据输入类”

“写UTF文本”改成了“读UTF文本”,最后用“提示信息框”弹出。

 

 

运行结果如下图:

成功将“取输出对象”写的文件内容“读取”出来。

 

 

 

● 取文件尺寸方法

 

如下图:

顾名思义就是取一个“文件访问类”对象的尺寸,返回一个“长整数”值。

 

 

如下图:

代码编写也很简单,创建“文件访问类”后,直接用本方法“取文件尺寸”即可,“状态对象”参数有默认值,根据实际需求决定是否填写。

最后“到文本”赋值“编辑框2”即可。

 

 

运行结果如下图:

成功取出文件尺寸。

 

 

 

● 置当前读写位置方法

 

如下图:

顾名思义,就是设置当前“读写位置“,并且返回一个“逻辑值”判断是否设置成功。

 

 

如下图:

创建后直接用本方法“置读写位置”即可,这里的参数随意输入了一个“10”,最后也可以用“取当前读写位置”方法判断是否成功。

 

 

运行结果如下图:

返回的“当前读写位置”也是“10”,证明写入“位置”成功。

 

 

 

● 置文件尺寸方法

 

如下图:

通俗理解就是将文件变大,并且不影响文件正常读取!

 

 

如下图:

创建“文件访问类”后,用本方法置入一个“100”字节。

随后可以用“取输入对象”“读utf文本”方法,将文本读取赋值给“编辑框2”显示。

 

 

运行结果如下图:

上面我们“取文件尺寸”的时候得知“火山文件.txt”“29字节”,这里执行“置入尺寸”后依然可以“成功读取”

右图:“文件管理器”内文件尺寸也变成了“100字节”