$file - 文件系统

  • 更新时间:2025-12-13 11:58:45

文件系统

文件系统本身是用来操作外部存储(sdcard)文件的,但是部分函数也可以操作assets目录(app打包后的项目目录)下的文件。

如果你希望通过$file操作assets下的文件,你需要知道如下规则:

1.assets中的文件夹不能以_开头(安卓机制)否则无法读取文件

2.assets只能进行读取操作,因此我们可以进行的操作有:罗列文件、拷贝文件、读取文件

获得uri(路径)

获得Uri对象

通过文件提供器{FileProvider}来解析文件路径,获得{Uri}对象。

如果你想单纯的解析字符串构建Uri对象,那么可以使用$http.uri("uriStr");函数

该函数只能操作外部存储(sdcard)文件,不能操作assets目录下的文件。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {Uri} Uri对象

  • 版本 : 1.6.8

//一般用来获取图片uri
定义 uri = $文件.获得uri("/storage/emulated/0/Pictures/小红.png");

打开(路径)

获得File对象

该函数本质上是一个拼接函数,无论传入的path是否存在,都会根据构想返回一个完整路径。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {File} 文件对象

  • 版本 : 1.6.8

//获得res目录
定义 文件 = $文件.打开("res");
提示("文件对象",文件);///storage/emulated/0/Pictures/API教学/res

是文件(路径)

是否是文件

如果传入的路径不存在或者不是目录都会返回false,该函数只能操作外部存储(sdcard)文件,不能操作assets目录下的文件。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否是文件

  • 版本 : 1.6.8

//是否是文件
日志($文件.是文件("res"));//false
日志($文件.是文件("main.js"));//true

是目录(路径)

是否是文件夹

如果传入的路径不存在或者不是目录都会返回false,该函数只能操作外部存储(sdcard)文件,不能操作assets目录下的文件。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {布尔值} 是否是文件夹

  • 版本 : 1.6.8

//是否是目录
日志($文件.是目录("res"));//true
日志($文件.是目录("main.js"));//false

是空目录(路径)

是否是空文件夹

只有当目标路径是目录并且存在文件的时候才会返回false,如果文件不存在或者不是目录都会返回true。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否是空文件夹

  • 版本 : 1.6.8

//是否是空目录
日志($文件.是空目录("res"));//false
日志($文件.是空目录("xml"));//true

是空的(路径)

是否是空文件或文件夹

如果不存在则返回false

如果是文件则判断文件内容是否为空

如果是文件夹则判断文件夹是否为空

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否是文件夹

  • 版本 : 1.6.8

//是否是空文件或文件夹
日志($文件.是空的("res"));//false
日志($文件.是空的("xml"));//true
日志($文件.是空的("main.js"));//false

拼接(父级, 子级)

路径拼接

  • 参数 : 父级 {字符串} 路径(不支持相对路径)

  • 参数 : 子级 {字符串} 路径(不支持相对路径)

  • 返回 : {字符串} 路径

  • 版本 : 1.6.8

定义 路径 = $文件.拼接("sdcard", "Pictures");
提示("路径",路径);

拼接(路径)

拼接路径

  • 参数 : 路径 {字符串数组[]} 路径数组(不支持相对路径)

  • 返回 : {字符串} 拼接好的路径

  • 版本 : 1.0.0

定义 路径 = $文件.拼接(["sdcard", "Pictures", "我的项目", "res"]);
提示("路径",路径);

创建(路径)

创建文件

如果目录不存在,则会自动创建目录。此函数只能操作外部存储(sdcard)文件,不能操作assets目录下的文件。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否创建成功(文件存在会返回false)

  • 版本 : 1.6.8

$文件.创建("xml/res/test.js");

创建目录(路径)

创建目录

只能操作外部存储(sdcard)目录,不能操作assets目录下的目录。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否创建成功

  • 版本 : 1.6.8

$文件.创建目录("xml/kir");

存在(路径)

路径是否存在

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {布尔值} 是否存在

  • 版本 : 1.6.8

$文件.创建("./测试文件夹/a.js");
如果($文件.存在("./测试文件夹/a.js")){
    提示("文件","路径存在");
}

确保目录(路径)

确保文件夹存在

如果路径中的目录不存在则会创建目录

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {字符串} 路径

  • 版本 : 1.6.8

//创建目录:/测试文件夹/demo
$文件.确保目录("./测试文件夹/demo/a.js");

读取(路径)

读取文件

此函数支持读取assets中的文件,适用于打包app后读取文本文件。在未打包时将会读取sdcard上的文件。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {字符串} 文本内容

  • 版本 : 1.6.8

//开始读取文件
定义 内容 = $文件.读取("./main.js");
提示("内容",内容);

读取(路径, 编码)

读取文件

此函数支持读取assets中的文件,适用于打包app后读取文本文件。在未打包时将会读取sdcard上的文件。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 参数 : 编码 {字符串} 编码

  • 返回 : {字符串} 文本内容

  • 版本 : 1.6.8

定义 内容 = $文件.读取("./main.js","gbk");
提示("内容",内容);

读取行(路径)

读取文件行

此函数支持读取assets中的文件,适用于打包app后读取文本文件。在未打包时将会读取sdcard上的文件。

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {字符串数组[]} 文件行列表

  • 版本 : 1.6.8

定义 列表 = $文件.读取行("./main.js");
提示("内容",列表);

读取字节(路径)

读取文件字节

此函数支持读取assets中的文件,适用于打包app后读取二进制文件。在未打包时将会读取sdcard上的二进制文件。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {字节数组[]} 文件字节

  • 版本 : 1.6.8

l定义 数据 = $文件.读取字节("./main.js");
日志(数据);

写入(内容, 路径)

写入文件

只适用于写入到外部存储

  • 参数 : 内容 {字符串} 内容

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 版本 : 1.6.8

$文件.写入("我是内容","./xml/a.js");

写入(内容, 路径, 编码)

写入文件

只适用于写入到外部存储

  • 参数 : 内容 {字符串} 内容

  • 参数 : 路径 {字符串} 路径

  • 参数 : 编码 {字符串} 编码

  • 版本 : 1.6.8

$文件.写入("我是内容","./code/a.js","GBK");

写入行(行数据, 路径)

写入行数据

只适用于写入到外部存储

  • 参数 : 行数据 {字符串数组[]} 行数据

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 版本 : 1.6.8

$文件.写入行(["我是内容1","我是内容2","我是内容3"],"./code/a.js");

追加(内容, 路径)

追加文件

只适用于写入到外部存储

  • 参数 : 内容 {字符串} 内容

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 版本 : 1.6.8

//追加一行字符并且换行
$文件.追加("我是新的内容\n","./code/a.js");

追加行(行数据, 路径)

追加行数据

只适用于写入到外部存储

  • 参数 : 行数据 {字符串数组[]} 行数据

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 版本 : 1.6.8

//无需换行符号,自动换行
$文件.追加行(["追加01","追加02","追加03"],"./code/a.js");

写入字节(字节数据, 路径)

写入文件

只适用于写入到外部存储

  • 参数 : 字节数据 {字节数组[]} 内容

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 版本 : 1.6.8

$文件.写入字节([09,46,36,7,89,34],"./xml/mFile.txt");

复制(源路径, 目标路径)

拷贝文件

支持将assets文件拷贝到外部存储,也支持将外部存储文件拷贝到指定路径中,虽然目标路径支持书写相对路径,但是建议源路径使用相对路径,而目标路径最好用绝对路径。

  • 参数 : 源路径 {字符串} 源(支持相对路径)

  • 参数 : 目标路径 {字符串} 目标(支持相对路径)

  • 版本 : 1.6.8

//把assets文件拷贝到sdcard上
$文件.复制("res/a.txt","/sdcard/Pictures/测试项目/res/a.txt");

移动(源路径, 目标路径)

移动文件或文件夹

此函数只适用于操作外部存储文件

  • 参数 : 源路径 {字符串} 源文件夹(支持相对路径)

  • 参数 : 目标路径 {字符串} 目标文件夹(支持相对路径)

  • 版本 : 1.6.8

//把位于modules文件夹下的所有文件都移动到xml下
//注意传入的都是目录(可以是相对路径)
定义 移动成功了 = $文件.移动("modules","xml");
如果(移动成功了){
    提示("移动文件","成功");
}否则{
    提示("移动文件","失败");
}
//移动文件的话,src必须是存在的(支持相对路径)
定义 移动成功 = $文件.移动("res/code.js","/");
如果(移动成功){
    提示("移动文件","成功");
}否则{
    提示("移动文件","失败");
}

重命名(源路径, 目录路径)

重命名文件

此函数只适用于操作外部存储文件

  • 参数 : 源路径 {字符串} 源

  • 参数 : 目录路径 {字符串} 目标

  • 返回 : {布尔值} 是否重命名成功

  • 版本 : 1.6.8

定义 成功 = $文件.重命名("run.js","res/code.js");
如果(成功){
    提示("重命名","成功");
}否则{
    提示("重命名","失败");
}

长度(路径)

获取文件大小

如果文件不存在,则返回0,此函数只适用于操作外部存储文件

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {数字} 文件大小

  • 版本 : 1.0.0

定义 大小 = $文件.长度("./xml/mFile.txt");
提示("文件大小",大小);//6(字节)

大小(文件长度)

获取文件可视化大小

如果文件不存在,则返回0b,此函数只适用于操作外部存储文件

  • 参数 : 文件长度 {数字} 文件长度

  • 返回 : {字符串} 文件大小

  • 版本 : 1.6.8

定义 尺寸 = $文件.大小(1099);
提示("文件大小",尺寸);//6(字节)

大小(路径)

获取文件可视化大小

如果文件不存在,则返回0b,此函数只适用于操作外部存储文件

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {字符串} 文件大小(格式化单位)

  • 版本 : 1.6.8

定义 尺寸 = $文件.大小("./xml/mFile.txt");
提示("文件大小",尺寸);//6 B

文件名(路径)

文件名称

该函数本质上就是字符串操作,解析得到文件名称。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {字符串} 文件名称

  • 版本 : 1.6.8

定义 名称 = $文件.文件名("./xml/mFile.txt");
提示("文件名称",名称);//mFile.txt

主文件名(路径)

主文件名

不包含后缀名的文件名称,该函数本质上就是字符串操作,解析得到文件名称(不包含后缀)。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {字符串} 文件名称

  • 版本 : 1.6.8

定义 主文件名 = $文件.主文件名("./xml/mFile.txt");
提示("文件名称",主文件名);//mFile

后缀名(路径)

后缀名

该函数本质上就是字符串操作,解析得到文件后缀名。

  • 参数 : 路径 {字符串} 路径

  • 返回 : {字符串} 文件名称

  • 版本 : 1.6.8

定义 后缀名 = $文件.后缀名("./xml/mFile.txt");
提示("后缀名",后缀名);//txt

存储目录()

获得存储目录

  • 返回 : {字符串} sdcard路径

  • 版本 : 1.6.8

定义 路径 = $文件.存储目录();
提示("SDCard路径",路径);///storage/emulated/0

删除(路径)

删除文件或文件夹

递归删除文件或者文件夹,如果没有删除成功,则内部会有三次重试机制,强制进行删除

该函数只适用于操作外部存储文件

  • 参数 : 路径 {字符串} 文件路径(支持相对路径)

  • 返回 : {布尔值} 是否删除成功

  • 版本 : 1.6.8

//删除目录
$文件.删除("tools");
//删除文件
$文件.删除("main.js");

罗列(路径)

罗列文件

该函数支持罗列打包后apk中的资源文件(assets目录),但是注意书写相对路径

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 返回 : {字符串列表[]} 文件路径集合

  • 版本 : 1.6.8

定义 数组 = $文件.罗列("res");
循环(定义 路径 关于 数组){
    日志(路径);
}

罗列(路径, 过滤器)

罗列文件

支持罗列打包后apk中的资源文件,但是注意书写相对路径

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 参数 : 过滤器 {(路径)=>{返回 真;}} 过滤函数

  • 返回 : {字符串列表[]} 文件路径集合

  • 版本 : 1.6.8

定义 路径数组 = $文件.罗列("res",(路径)=>{
    //过滤器
    返回 真;
});
循环(定义 路径 关于 路径数组){
    日志(路径);
}

递归文件(路径, accept)

递归遍历文件

该函数只适用于操作外部存储文件

  • 参数 : 路径 {字符串} 路径(支持相对路径)

  • 参数 : accept {(文件)=>{返回 真;;}} 过滤函数

  • 返回 : {File[]} 文件列表

  • 版本 : 1.6.8

$文件.递归文件("/res",(文件)=>{
    //参数类型:文件:java.io.File
    返回 真;
});

罗列视频()

罗列视频文件

通过安卓媒体库获取视频文件,需要获取读取视频权限($permit.readVideo())

  • 返回 : {VideoInfo[]} 视频文件列表

  • 版本 : 1.6.8

//VideoInfo属性:
定义 信息对象 = {
    id: 0,    //视频id
    名称: "视频名称",
    路径: "视频路径",
    大小: 0,  //视频大小
    时长: 0,   //视频时长
    时间: 0,  //时间
}
//获取视频列表
定义 信息数组 = $文件.罗列视频();
//遍历视频列表
循环(定义 信息 关于 信息数组){
    日志(信息);
}

罗列音频()

罗列音频文件

通过安卓媒体库获取音频文件,需要获取读取音频权限($permit.readAudio())

  • 返回 : {AudioInfo[]} 音频文件列表

  • 版本 : 1.6.8

//AudioInfo属性:
定义 信息对象 = {
    id: 0,    //音频id
    名称: "音频名称",
    路径: "音频路径",
    大小: 0,  //音频大小
    时长: 0,   //音频时长
    艺术家: "艺术家",
    专辑: "专辑",
    时间: 0,  //时间
}
//获取音频列表
定义 音频信息列表 = $文件.罗列音频();
//遍历音频列表
循环(定义 信息 关于 音频信息列表){
    日志(信息);
}

罗列图片()

罗列图片文件

通过安卓媒体库获取图片文件,需要获取读取图片权限($permit.readImage())

  • 返回 : {ImageInfo[]} 图片文件列表

  • 版本 : 1.6.8

//ImageInfo属性:
定义 信息 = {
    id: 0,    //图片id
    名称: "图片名称",
    路径: "图片路径",
    大小: 0,  //图片大小
    : 0, //图片宽度
    : 0,//图片高度
    时间: 0,  //时间
}
//获取图片列表
定义 图片信息数组 = $文件.罗列图片();
//遍历图片列表
循环(定义 信息 关于 图片信息数组){
    日志(信息);
}

获取目录(类型名称, 是否是公共目录)

获取安卓目录路径

获取安卓系统指定目录的路径,根据目录类型返回对应的目录路径字符串。

目录类型可选项有: "pictures","图片", "downloads","下载", "dcim", "music","音乐", "movies","视频", "documents", "文档", "alarms", "闹钟", "notifications", "通知", "podcasts", "播客", "ringtones", "铃声"

如果目录类型为自己自己自定义的目录名称,则会返回应用内部私有目录路径,并且以传入的目录类型作为目录的名称。

  • 参数 : 类型名称 {字符串} 目录类型,可选项有: "pictures","图片", "downloads","下载", "dcim", "music","音乐", "movies","视频", "documents", "文档", "alarms", "闹钟", "notifications", "通知", "podcasts", "播客", "ringtones", "铃声"

  • 参数 : 是否是公共目录 {布尔值} 是否为公共目录(true为公共目录,false为私有目录),默认为true,公共目录访问时都需要存储权限

  • 返回 : {字符串} 目录路径字符串

  • 版本 : 1.6.8

定义 媒体视频路径 = $文件.获取目录("视频",true);

获取目录(类型名称)

获取安卓公共目录路径

获取安卓系统指定目录的路径,根据目录类型返回对应的目录路径字符串。

目录类型可选项有: "pictures","图片", "downloads","下载", "dcim", "music","音乐", "movies","视频", "documents", "文档", "alarms", "闹钟", "notifications", "通知", "podcasts", "播客", "ringtones", "铃声"

如果目录类型为自己自己自定义的目录名称,则会返回应用内部私有目录路径,并且以传入的目录类型作为目录的名称。

  • 参数 : 类型名称 {字符串} 目录类型,可选项有: "pictures","图片", "downloads","下载", "dcim", "music","音乐", "movies","视频", "documents", "文档", "alarms", "闹钟", "notifications", "通知", "podcasts", "播客", "ringtones", "铃声"

  • 返回 : {字符串} 目录路径字符串

  • 版本 : 1.6.8

定义 媒体视频路径 = $文件.获取目录("视频");