文件名类操作实例讲解

作者:创世魂

 

● 辅助说明

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

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

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

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

 

本类所有方法的调用,必须用“文件名类.方法名”
或者定义一个类型为“文件名类”的变量,然后用“变量名.方法名”的形式调用。

 

● 创建方法

 

如下图:

打开帮助内容,可以看到"创建"有一个"文件名"参数和一个"文件名类"的对象返回值。

顾名思义,就是创建指定文件名的文件对象。

 

 

如下图:

可以定义一个“文件名类变量”,然后用“文件名类.创建()”方法给变量赋值,参数直接写“编辑框1”的内容。

可以利用定义的“文件名类变量”“取文件名”方法取出“文件名类”对象中存储的“文件”“目录”的路径。

注意:定义的“文件名类变量”一定要设置“参考”属性。

注意黄色箭头:用“变量类”访问类方法的时候,“取文件名”“参数1文件名类”不用写。

 

如下图:

运行后我们输入“火山软件开发平台”这个目录,执行后成功的创建“文件类”,并且也成功的利用“取文件名”方法将创建的其取出。

注意:输入的目录内,有结束的“路径符号",但是创建“文件名类”后重新取出后“路径符号”会消失。

 

 

● 创建2方法

 

如下图:

打开帮助内容,可以看到"创建2"有两个“文本型参数”和一个“文件类”的返回值。

顾名思义就是创建一个带“父目录名”“文件类”对象。

 

 

如下图:

“编辑框1”窗口创建的时候取的是“存储数据”路径,所以它可以当父路径,直接把“编辑框1”写入“参数1”即可。

"参数2"直接写"编辑框2"的内容即可。

 

 

如下图:

运行后在“编辑框2”输入一个“文件名”,执行后成功将“父目录”“文件名”合并了起来。

 

 

 

● 创建3方法

 

如下图:

打开帮助内容,该方法和“创建2”没什么区别,唯一不同之处就是,参数一变成了“文件类”对象。

 

 

如下图:

创建“两个”文件名类的变量,其中一个命名为“父目录对象”,另外一个依然可以命名“文件名类变量”

利用“创建”方法,创建“编辑框1”的内容为“文件名类”并且赋值给“父目录对象”的变量。

随后将“父目录对象”填入“创建3”“参数1”即可,“参数2”依然写“编辑框2”的内容。

 

 

如下图:

运行后填写“编辑框2”的文件名,成功将两个组合起来。

 

 

 

● 创建父目录文件对象方法

 

如下图:

打开帮助可以看到参数名和返回值都是“文件名类”对象,如果没有“父目录”会返回“空对象”

 

 

如下图:

代码编写也很简单,我们只需要在“创建3”的基础上稍作修改即可。

 

 

如下图:

运行后成功取出了“外部存储空间”的父目录。

 

 

 

● 创建绝对路径文件对象方法

 

如下图:

打开帮助内容,可以看到该方法的“参数”“返回值”都是“文件名类”

顾名思义就是取绝对路径的“文件名类”对象

 

 

如下图:

我们用“创建”方法,创建一个以“编辑框2”内容为参数的文件名类,并且赋值给定义的“文件名类变量”

然后用“创建绝对路径文件对象”的方法,将“编辑框2”“相对路径”转换成“绝对路径”的文件名类变量。

最后用“取文件名”方法,取出来路径文本看一下效果。

 

 

如下图:

运行后,我们在“编辑框2”,输入“相对路径”执行后会自动处理成“绝对路径”

 

 

 

● 创建绝对路径文件对象2方法

 

如下图:

打开帮助内容我们可以看到本方法和“创建绝对路径文件对象”没什么区别,不同之处就是本方法不会对“相对路径”前面的两个小数点就行处理。

 

 

如下图:

代码编写也和“创建绝对路径文件对象”一模一样。

 

 

如下图:

调试运行后,我们输入一个“相对路径”可以看到本方法并没有处理掉两个小数点。

 

 

 

● 创建临时文件方法

 

如下图:

打开帮助内容,可以看到本方法有“三个参数”和一个“文件名类”的返回值,并且“参数2和3”都有默认值。

 

 

如下图:

代码编写如下图,依然是定义一个“文件名类”变量,把“编辑框2”的内容放入“参数1”“参数2和3”因有默认值所以可以直接省略不写。

最后我们可以用“取文件名”的方法取出“临时文件”的目录。

 

 

如下图:

调试运行后,可以在“编辑框2”输入一个“文件名”,取出完整路径后可以看到,后缀也是默认的“tmp”

并且在“文件名”“后缀”之间有一个10位数的“时间戳”

 

 

 

● 创建目录方法

 

如下图:

打开帮助内容,可以看到它有一个“文件名类”参数和一个“逻辑”返回值。

注意黄框内容,如果“父目录不存在”或者“目录已经存在”都会返回“假”

 

 

如下图:

定义一个“目录对象”的文件类变量,然后用“创建”方法,创建“编辑框1”的内容给定义的变量。

 

 

如下图:

调试运行后,我们输入要创建的"目录名","左图"创建成功,"右图"重复第二次创建会提示失败。

 

      

 

如下图:

打开手机"文件管理器",也可以看到我们创建的"目录"。

 

 

● 创建目录内容文件列表方法

 

如下图:

打开帮助内容,可以看到本方法只有一个“文件名类”参数和一个“文件名类数组”返回值。

顾名思义就是返回指定目录内的“子目录”“文件名”数组。

 

 

如下图:

代码编写也很简单,定义三个变量,依然是用“创建”方法去创建文件对象,赋值给变量。

然后用该方法就可以取出“文件名类数组”

最后利用“取数组成员数”的方法取数量,最后“到文本”显示结果。

 

 

如下图:

左图:我们在“666”目录,随便放“两个”文件夹和“三个”文件。

右图:成功的取出“数量5”

 

      

 

 

● 创建新文件方法

 

如下图:

打开帮助内容,可以看到"创建新文件"有一个"文件名类"参数和一个"逻辑"返回值。

注意:黄色的框内提示,已经存在返回假。

 

 

如下图:

代码编写依然是创建“文件名类”变量,然后用“创建”方法赋值。

最后使用本方法进行文件创建。

 

 

如下图:

左图:我们在“666”目录内创建一个“777”的文本文件,提示创建成功。右图:重复创建则会返回“失败”

 

      

 

如下图:

打开手机"文件管理器",可以看到文件成功创建。

 

 

● 创建整个目录方法

 

如下图:

打开帮助内容,可以看到本方法也是一个“文件名类”参数和一个“逻辑”返回值。

它和“创建目录”不同之处在于,它可以直接创建“多层”目录,创建的“目标目录”“父目录”如果不存在会“自动创建”

注意:如果目标"目录"存在会返回假。

 

 

如下图:

代码编写也非常简单,和“创建新文件”方法无差别。

 

 

如下图:

调试运行后,我们在“编辑框”输入自己要创建的“多层”目录,执行会全部创建成功。

 

 

如下图:

打开手机"文件管理器",可以看到输入的“所有目录”全部自动创建。

 

 

● 路径比较方法

 

如下图:

打开帮助内容,可以看到"路径比较"有两个个"文件名类"参数和一个"整数"返回值。

顾名思义就是比较“两个路径”是否相等。

注意:帮助文档内的返回值书写“有错误”

路径一大于路径二:结果“大于0”

路径一小于路径二:结果"小于0"

路径一等于路径二:结果"等于0"

 

 

如下图:

代码编写也很简单,定义两个“文件名类”变量和一个“整数”的结果变量。

随后用创建方法分别将两个“编辑框”的内容创建“文件对象”,并且赋值给“文件名类变量”

最后用“路径比较”方法对比即可。

 

 

如下图:

运行后输入路径内容,比对结果如下。

 

     

 

 

● 取父目录方法

 

如下图:

打开帮助内容,可以看到本方法有一个“文件名类”参数和一个“文本”返回值。

顾名思义就是取出指定“文件对象”“父目录”

 

 

如下图:

代码编写很简单,创建一个“文件类对象”,用“创建”方法创建对象。

最后用“取父目录”就可以取出来“父目录路径”

 

 

运行后如下图:

左图:成功取出“目录”“父目录路径”

右图:成功取出"文件""父目录路径"

 

      

 

 

● 取绝对路径方法

 

如下图:

打开帮助内容,可以看到本方法有一个"文件名类"参数和一个"文本"返回值。

本方法和“创建绝对路径文件对象”不同之处就是,本方法直接返回“文本”

 

 

代码编写如下图:

依然是需要“创建”方法,创建“文件名类”的变量,最后用“取绝对路径”方法取出即可。

 

 

如下图:

我们在“编辑框1”输入一个“相对路径”,会自动处理成“绝对路径”

 

 

 

● 取绝对路径2方法

 

如下图:

打开帮助内容,可以看到本方法和“取绝对路径”唯一的区别就是,本方法不会对“相对路径”的两个小数点进行处理。

 

 

如下图:

代码编写和“取绝对路径”没有任何区别。

 

 

如下图:

输入一个“相对路径”可以看到并没有对小数点进行处理。

 

 

 

● 取可用空间尺寸方法

 

如下图:

打开帮助内容,可以看到本方法有一个“文件名类参数”和一个“长整数”的返回值,返回字节长度。

 

 

代码编写如下图:

非常简单,将定义的“文件名类”变量,直接调用“取可用空间尺寸”方法即可。

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

 

 

如下图:

调试运行后,我们可以取出“外部存储数据根目录”还有这么多"字节"可以用。

 

 

 

● 取目录内容列表方法

 

如下图:

打开帮助内容,可以看到本方法和“创建目录内容文件列表”不同之处在于,本方法直接返回“文本型”数组。

 

 

如下图:

定义两个变量,创建“文件名类”对象后,直接调用本方法就可以取出“目录文件数组”

最后“取数组成员数”,然后“到文本”赋值给“编辑框2”显示出来。

 

 

如下图:

执行后左图显示“4个”数组成员,右图的“文件管理器”也是“4个”,证明取出的是正确的。

 

    

 

 

● 取全部空间尺寸方法

 

如下图:

顾名思义就是取出所有空间的尺寸,返回值的单位依然是字节。

 

 

如下图:

依然是创建“文件名类”变量,随后用本方法直接取尺寸,最后转换文本赋值给“编辑框2”显示。

 

 

如下图:

调试运行后,成功取出“取外部存储空间根目录”总共有这么多字节空间。

 

 

 

● 取剩余空间尺寸方法

 

如下图:

本方法和“取全部空间尺寸”没什么区别,顾名思义就是“取出剩余空间”尺寸。

 

 

如下图:

代码编写和“取全部空间尺寸”一样,直接套用下来即可。

 

 

如下图:

运行后可以看到成功取出“取外部存储空间根目录”还有这么多字节空间可以用。

 

 

 

● 取文件尺寸方法

 

如下图:

打开帮助内容,可以看到有一个“文件名类”参数和一个“长整数”返回值。

注意:只能“取文件尺寸”,目录取不出来。

 

 

代码如下图:

定义“文件名类”变量,然后用本方法直接“取文件尺寸”即可。

 

 

如下图:

成功取出“666”文件夹内的“1.png”图片尺寸。

 

 

 

● 取文件名方法

 

如下图:

可以看到一个“文件名类”参数和“文本型”的返回值。

顾名思义就是取出创建“文件对象”时候的完整“文件路径”

 

 

如下图:

代码编写也很简单,和前面的命令模式基本一样,套下来即可,最后赋值给“编辑框2”显示。

 

 

如下图:

左图:取目录对象的效果(取出来的路径没有结束的“路径符”)。

右图:取文件对象的效果。

 

      

 

 

● 取无路径文件名方法

 

如下图:

帮助内容依然显示一个“文件名类”参数和一个“文本返回值”

顾名思义就是取出“目录名”“文件名”,不包括前面的路径部分。

 

 

如下图:

定义“文件名类”变量,创建“文件名类”后赋值给“变量”,最后用本方法“取无路径文件名”,赋值给“编辑框2”显示。

 

 

如下图:

左图:“取目录名”效果。

右图:“取文件名”效果。

 

      

 

 

● 取系统所有根目录方法

 

如下图:

打开帮助内容,可以看到它之后一个“文件名类”“数组”返回值。

顾名思义就是取出所有的“根目录”

 

 

如下图:

创建“文件类数组”变量,然后用本方法为“数组变量”赋值。

最后“取数组成员数”“到文本”转换,然后用“提示信息框”显示出来看效果。

 

如下图:

运行后,因安卓系统下只有一个根目录,所以“显示1”

 

 

 

● 取最后修改时间方法

 

如下图:

打开帮助内容,有一个“文件名类”参数和一个“长整数”的返回值。

返回的是一个13位数的时间戳,这个时间戳就是从1970年1月1日0点,到指定时间的毫秒数。

 

 

代码如下图:

依然是将“编辑框1”的内容创建一个“文件类变量”,然后赋值给定义的“变量”

然后用“取最后修改时间”方法就可以取出修改13位毫秒时间戳。

 

 

如下图:

左图:成功取出一个“文件”的最后修改时间。

右图:成功取出一个“目录”的最后修改时间。

 

      

 

 

● 删除方法

 

如下图:

打开帮助内容,参数和上面的方法一样都是“文件名类”,不同之处就是它的返回值是“逻辑型”

要注意的是,如果删除目录,必须保证目录内是空的。

 

 

如下图:

本方法也需要创建“文件类变量”,然后直接使用“删除”方法即可,最后用“如果”进行判断。

 

 

如下图:

左图:删除文件“1.txt”成功。

右图:因为“666”目录内还有其它文件,所以目录“删除失败”

 

      

 

 

● 是否被隐藏方法

 

如下图:

顾名思义,就是判断一个“文件类”对象是否是“隐藏文件”或者“目录”

应用场景:例如你用某个方法获取到一个“路径”,但是不知道这个“路径”“文件对象”是不是“隐藏”状态。

这时候你就可以用“本方法判断”

 

 

如下图:

因为是写例子,所以使用本方法需要提前创建一个"文件类变量",然后直接使用"是否被隐藏"方法,最后用"如果"进行判断。

 

 

如下图:

左图:我们手动输入一个“隐藏的文件名”,就会自动判断出它是隐藏的文件。

右图:我们手动输入一个“正常的文件名”,就会可以判断出他不是隐藏文件。

注意:本方法对“隐藏的目录”判断同样有效,并且无论是“隐藏的文件”还是“隐藏的目录”“目录名”“文件名”前面会有一个“小数点”作为标识(红圈内)。

 

      

 

 

● 是否存在方法

 

如下图:

顾名思义就是判断指定的“文件对象”是否存在,存在返回真,不存在返回“假”

目录和文件都可以进行判断。

 

 

如下图:

创建"文件类变量",然后直接使用"是否存在"方法即可,最后用"如果"进行判断。

 

 

如下图:

左图:执行后“目录存在”

右图:随便输入一个不存在文件,就会提示“不存在”

 

      

 

 

● 是否可读取方法

 

如下图:

顾名思义,就是判断一个“文件名类”是否可被当前程序读取使用,如果没有操作权限会返回“假”,相反返回“真”

什么时候“返回假”

例如:你操作的目录是安卓内部数据目录,并且还没有获取root权限,肯定是返回“假”

如果指定的“文件对象”已经被其他软件占用,这个时候也会返回“假”

如果目标文件不存在,也返回“假”

 

 

如下图:

创建"文件类变量",然后直接使用"是否可读取"方法即可,最后用"如果"进行判断。

 

 

如下图:

运行后,“外部存储数据目录”可以被读取,所以返回“可以”

 

 

● 是否可写入方法

 

如下图:

顾名思义就是判断一个文件对象是否有“可写入”的权限,有返回“真”,没有返回“假”

返回假的情况同“是否可读取”

 

 

如下图:

创建“文件类变量”,然后直接使用“是否可写入”方法即可,最后用“如果”进行判断。

 

 

如下图:

“1.png”存在并且有“写入权限”,所以这里返回“可以”

 

 

 

● 是否可执行方法

 

如下图:

顾名思义就是判断一个文件对象是否有“可执行”的权限,有返回“真”,没有返回“假”

返回假的情况同“是否可读取”

 

 

如下图:

创建“文件类变量”,然后直接使用“是否可执行”方法即可,最后用“如果”进行判断。

 

 

如下图:

左图:“666”目录存在且可以被执行,所以返回“可以执行”

右图:随便输入了一个“不存在”的目录,会返回“不可以”

 

      

 

 

● 是否为绝对路径方法

 

如下图:

顾名思义就是判断一个“文件对象”是否为“绝对路径”,如果是"真",不是返回"假"。

注意黄色框内提示:只要不是“/”起始的路径,都不是绝对路径。

 

 

如下图:

创建“文件类变量”,然后直接使用“是否为绝对路径”方法即可,最后用“如果”进行判断。

 

 

如下图:

左图:带“/”路径符的直接判断“是”

右图:只要删除了“/”路径符号就会判断“不是”

 

      

 

 

● 是否为目录方法

 

如下图:

顾名思义就是判断一个文件对象“是否为目录”,如果是目录返回“真”,不是返回“假”

目标目录不存在也会“返回假”

 

 

如下图:

创建"文件类变量",然后直接使用"是否为目录"方法即可,最后用"如果"进行判断。

 

 

如下图:

左图:是目录“返回真”

右图:输入了一个文件则会“返回假”

 

      

 

 

● 是否为文件方法

 

如下图:

本方法和“是否为目录”的功能正好相反,它是用来判断目标对象是否为“文件”,如果是文件返回"真",不是返回"假"

目标文件不存在也会"返回假"

 

 

如下图:

创建"文件类变量",然后直接使用"是否为文件"方法即可,最后可以用"如果"进行判断。

 

 

如下图:

左图:目标存在,并且是文件“返回真”

右图:虽然输入了一个文件,但是目标不存在,依然会返回“不是文件”

 

      

 

 

● 置可读状态方法

 

如下图:

本方法有三个参数。

参数一:依然是“文件名类”

参数二:是否可读,意思就是说,设置指定“文件对象”是否可读状态。“真”为可读,“假”为不可读。

参数三:“真”设置给当前用户,“假”设置给所有用户。

注意:“黄色框”内提示,因国内安卓系统环境复杂,并不保证每一台手机都可以设置生效(关于权限的设置不再赘述)。

 

 

 

如下图:

创建"文件类变量",然后直接使用"置可读状态"方法即可,最后可以用"如果"进行判断。

注意:这里采用的是“动态调用”(变量调用的模式),所以“参数一”“文件名类”可以省略,直接从“参数二”开始写即可。

 

 

 

● 置可写状态方法

 

如下图:

本方法依然是三个参数。

本方法和“置可读状态”一样,设置指定"文件对象"是否可写入数据。

失败原因:同“置可读状态”

 

 

如下图:

代码编写和“置可读状态”一样。

 

 

 

● 置可执行状态方法

 

如下图:

本方法和"置可读状态"一样,设置指定"文件对象"是否可执行。

失败原因:同"置可读状态"

 

 

如下图:

创建"文件名类",然后用直接调用本方法,最后用"如果"判断返回值即可。。

 

 

 

● 置为只读方法

 

如下图:

本方法和"置可读状态"一样,设置指定"文件对象"只可以读取数据,不可写入数据。

失败原因:同"置可读状态"

 

 

如下图:

创建“文件名类”,然后用直接调用“本方法”,最后用“如果”判断返回值即可。。

 

 

 

● 置最后修改时间方法

 

如下图:

打开帮助可以看到有两个参数,设置成功返回“真”,失败返回“假”

参数一:还是“文件名类”

参数二:13位数的时间戳。

 

 

如下图:

创建“文件名类”,赋值给“文件名类变量”

“取当前毫秒时间”方法,可以取出当前时间的时间戳,取出后赋值给定义的“长整数”变量。

最后把“当前时间”变量,放入本方法内,最后用“如果”判断返回值即可。

执行成功后,可以用“取最后修改时间”取出时间戳显示出来。

 

 

运行后效果如下图:

 

 

● 重命名方法

 

如下图:

可以看到有两个“文件名类”参数,成功返回“真”,失败返回“假”

本方法也可用作“移动文件”“另外一个目录”,并且还可以进行重名操作。

如果要“移动文件”,必须保证“目标目录”存在。

 

 

如下图:

本方法需要创建两个“文件名类”,一个“源文件”,一个是“目标文件”

然后将两个变量依次放入“重命名”方法即可。

 

 

如下图:

左图:把“666”目录内“1.png”成功移动并且重命名到了“外部存储空间根目录”

右图:可以在“文件管理器”内看到移动后的“新文件名”