参考标准库/fsys文件操作/默认库
1、获取项目根目录的位置
getCurDir() = 获取当前目录。
当前目录易被改动,导致相对路径(例如 "./res/")位置变化。
路径首字符用单个斜杠或反斜杆表示「应用程序根目录」的写法更可靠,例如:(例如 "/res/")。
很多组件(例如文件对话框)都可能会悄悄改变当前目录
import fsys; console.log(fsys.getCurDir() );
2、创建目录
createDir(.("目录路径",是否清空重建) = 创建目录并返回创建成功的完整文件路径,可创建多层目录,参数二可选
fsys.createDir("dir",true)
创建多层目录
fsys.createDir("dir\dirInner",true)
判断是否目录
isDir("__/*路径*/") = 路径是否目录,调用attrib检查目标路径是否具有_FILE_ATTRIBUTE_DIRECTORY属性,参数为空字符串或 null 返回 false,包含不可见字符的错误路径可用「工具>文本文件>十六进制编辑器」,或 string.hex 函数查看
var dir1 = fsys.createDir("dir",true) if(fsys.isDir("dir")){ console.log("是目录") } else { console.log("不是目录") }
3、删除文件或目录
delete( = 删除文件或目录,成功返回 true,删除含畸形路径的目录请改用 fsys.remove 函数。此函数失败返回 false 时可用 fsys.opError 获取错误代码
删除文件
fsys.delete("hello.txt")
删除目录以及目录下的文件
fsys.delete("dir")
4、移动文件或目录
move(.(源路径,目标路径,FOF选项,进度标题,父窗口句柄) = 移动文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。如果目标路径已存在或源路径含通配符则移动到目标目录下面,否则复制文件或目录到参数@2指定的目标路径。如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录,FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0,则显示操作界面与错误信息
将hello.txt文件移动到dir目录下
fsys.move("hello.txt","/dir")
5、复制文件或目录
copy(.(源路径,目标路径,FOF选项,进度标题,父窗口句柄) = 复制文件或目录,
源路径参数可以是多个路径组成的数组,其他参数可选。如果目标路径已存在或源路径含通配符则复制到目标目录下面,否则复制文件或目录到参数@2指定的目标路径。如果目标路径的父目录可能不存在,请先用 io.createDir 创建该目录
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0\n则显示操作界面与错误信息
将hello.txt文件复制到dir目录下
fsys.copy("hello.txt","/dir")
6、重命名文件或目录
rename(.(源路径,目标路径,FOF选项) = 重命名文件或目录,其他参数可选
FOF选项为 0 或 不指定该选项但 fsys.opFlags 为 0,则显示操作界面与错误信息
fsys.rename("hello.txt","hi.txt")
7、搜索当前目录下的文件
list(.("目录路径","模式匹配","通配符") = 搜索当前目录下的文件,不搜索子目录下的文件,返回符合条件的文件名数组,子目录数组,以及全部子目录数组。注意有三个返回值,数组中使用文件名为键存放对应完整路径的值。除参数@1以外其他参数可选,参数@2使用模式匹配语法匹配文件名,模式匹配会成为第三个返回值的匹配条件,通配符默认值是"*.*",也可以传入包含多个通配符的数组,通配符对第三个返回值无效
var res = fsys.list(fsys.getCurDir()) console.dumpTable(res)
注意:是文件,不是目录。
8、打开或创建文件对象
fsys.file("__/*文件路径*/","w+") = 读写模式打开,创建新文件清空原文件
示例
import fsys.file; var fp = fsys.file("hello.txt","w+"); fp.close()
此时项目根目录下就会生成一个hello.txt文件
9、读取文件的内容
console.log(string.load("hello.txt"))
结果:hello world!
显示前5个字节的内容
import fsys.file; file = fsys.file("hello.txt","r") console.log( file.read(5) )
结果:hello
10、向文件中写入内容
string.save("hello.txt","2023-11-16")
11、解压 zip 文件
将hello.zip文件解压到my目录
import zlib.unzip; var ok,err = zlib.unzip.extract( "hello.zip","/my", function(fileName,extractPath,fileInfo,size,unitSize,unitName){ if( size !== null ) ..console.log( "正在解压文件",fileName,size++ unitName ); else { ..console.log( "正在解压目录",fileName ); } return true; } )
12、遍历目录
遍历该目录下的所有文件和目录,以及子目录下的文件和目录
//批量处理文件 fsys.enum( fsys.getCurDir(), //指定 "*.*", //指定查询文件名,支持通配符,也可以用一个数组指定多个查询文件名 function(dirname,filename,fullpath,findData){ //可使用 return false 退出枚举过程 if(filename){ console.log("发现文件:",filename ) console.log("完整路径",fullpath ) /* 可以用 fsys.replace 函数替换文件内容, fsys.replace(fullpath,"查找的内容\d+","替换的内容",替换次数) fsys.replace 支持二进制文件或 UTF-8 文本文件, 其他编码用 fsys.codepage 加载文件后用 string.replace() 函数替换。 或者用 fsys.batch 实现批量处理并且支持自动处理编码转换。 */ } else{ console.log("发现目录:",dirname) } } ,/*如果此参数为false则忽略子目录*/ );