跳转至

fs_plugin

TSL语言的跨平台实现的文件系统(filesystem)插件。

安装

(已集成到mytsl发行版中)

动态库文件:fs_plugin.dll或者libfs_plugin.so。

把相关的动态库文件拷贝TSL目录的plugin目录。

(如果需要下载兼容正式版的Windows版本的动态库文件请访问这里)。

注意:由于有操作文件的函数,所以不宜放到公共的执行服务器,只可放到私有的执行服务器上。

使用指南

提供的TSL函数:

fs_path

fs_path(...) 用来组装路径。
参数说明:
 可以有任意多个参数,代表多级目录,例如:
  fs_path("c:\\", "temp", "file.txt") 返回 "c:\\temp\\file.txt"。
  fs_path("/home/user", "tsl", "my.tsl") 返回 "/home/user/tsl/my.tsl"。

fs_parent_path

fs_parent_path(path) 返回父路径。

fs_root_directory

fs_root_directory(path) 若存在则返回路径的根目录。
例如:"C:\Users\abcdef\Local Settings\temp" 根目录是 "\"。

fs_root_path

fs_root_path(path) 若存在则返回路径的根路径。
例如:"C:\Users\abcdef\Local Settings\temp" 根目录是 "C:\"。

fs_root_name

fs_root_name(path) 若存在则返回路径的根名。
例如:"C:\Users\abcdef\Local Settings\temp" 根名是 "C:"。

fs_relative_path

fs_relative_path(path) 返回相对路径。
例如:"C:\Users\abcdef\Local Settings\temp" 相对路径是 "Users\abcdef\Local Settings\temp"。

fs_filename

fs_filename(path) 返回文件名路径组分。
例如:fs_filename("/foo/bar.txt")  返回 "bar.txt"。

fs_stem

fs_stem(path) 返回主干路径组分,就是文件名,去掉其扩展名。
例如:fs_stem("/foo/bar.txt")  返回 "bar"。

fs_extension

fs_extension(path) 返回文件扩展名路径组分。
例如:fs_extension("/foo/bar.txt")  返回 ".txt"。

fs_remove_filename

fs_remove_filename(path) 移除文件名组分。

fs_replace_filename

fs_replace_filename(path, filename) 替换文件名组分。

fs_replace_extension

fs_replace_extension(path, ext) 替换扩展名,或空字符串时移除它。

fs_current_path

fs_current_path() 返回当前工作目录。

fs_temp_directory_path

fs_temp_directory_path() 返回适用于临时文件的目录位置。 
在 POSIX 系统上,路径可以是指定于环境变量者 TMPDIR 、 TMP 、 TEMP 、 TEMPDIR 之一,而且若不指定它们的任一者,则返回路径 "/tmp" 。
在 Windows 系统上,典型的路径是 GetTempPath 所返回者。

fs_exists

fs_exists(path) 检查给定的文件路径是否对应已存在的文件或目录。

fs_is_directory

fs_is_directory(path) 检查给定文件路径是否对应一个目录。

fs_file_size

fs_file_size(path) 返回文件大小。

fs_creation_time

fs_creation_time(path) 返回文件的创建时间。

fs_last_write_time

fs_last_write_time(path) 返回文件的最后修改时间。

fs_resize_file

fs_resize_file(path, new_size) 更改文件大小。

fs_copy

fs_copy(src_path, dest_path) 复制文件或目录。

fs_remove

fs_remove(path) 移除一个文件或空目录。

fs_remove_all

fs_remove_all(path) 移除一个文件或递归地移除一个目录及其所有内容。

fs_rename

fs_rename(path, new_path) 移动或重命名一个文件或目录。

fs_create_directory

fs_create_directory(path) 创建新目录。

fs_create_directories

fs_create_directories(path) 创建新目录,如果中间目录不存在,也会创建目录。

fs_list

fs_list(path) 列出目录的内容。

fs_list_all

fs_list_all(path) 列出目录的所有内容,包括子目录的。

fs_glob

fs_glob(pattern) 查找 glob 样式的模式匹配的文件,参见Unix的Shell的模式匹配。
参数说明:
 pattern 要匹配的模式,字符串类型。
 例如:c:\tsl\*.tsl 返回 c:\tsl 目录中的所有以.tsl结尾的文件名。
 如果要返回包括所有子目录的,可以这样 c:\tsl\**\*.tsl。

fs_equivalent

fs_equivalent(path1, path2) 检查路径 p1 与 p2 是否解析到同一文件系统实体。
注意:
 如果两个文件不存在,会返回NIL。

fs_space

fs_space(path) 返回路径的可用空间。
结果说明:
 返回为数组:
  [
   文件系统的总大小(以字节计),
   文件系统的空闲空间(以字节计),
   可用的空闲空间(可以小于或等于空闲空间)
  ]

fs_permissions

fs_permissions(path, perms) 设置文件访问权限。
参数说明:
 path  文件路径名。
 perms 整数类型,Unix方式的权限设置,例如:
   0777 所有用户拥有读、写及执行/查找权限。
   0755 文件拥有者拥有读、写、执行/查找权限,其他用户有读、执行/查找权限。

fs_canonical

fs_canonical(path, [base]) 转换路径path为规范绝对路径,即在其通用格式表示中无点、双点元素或符号链接的绝对路径。
参数说明:
 path  文件路径名。
 base  基础路径,可选参数。
结果说明:
  字符串类型,如果转换不成功会抛出错误。

fs_lock

fs_lock(path, [timeout]) 文件加锁(只适用于跨进程加锁,不能用于同进程的多个线程之间的加锁)。
参数说明:
 path  文件路径名。
 timeout 超时,精度毫秒,可选参数。
结果说明:
 返回为数组:
 如果发生错误,返回[错误代码,错误信息]
 否则,返回[0, 文件锁句柄]

fs_unlock

fs_unlock(handle) 文件解锁。
参数说明:
 handle  fs_lock返回的文件锁句柄。
结果说明:
 返回整数,1成功 0失败