2022年的 Tcl/Tk 编程入门参考 12.文件系统
Tcl语言在不同操作系统上的差异主要是文件路径方面,具体请查看官方文档:
Tcl/Tk文档 > Tcl Commands > filename
· TCL语言内部使用Unix风格的文件路径
· 支持绝对路径和相对路径(包括文件卷)
· 跨平台程序应使用file命令进行路径拼接
· Win形式需连写两个 \ ,比如 C:\\Users\\name
工作文件夹
Tcl语言有默认的工作文件夹(也叫工作目录),也就是文件操作类代码生效的文件夹(比如创建文件之类),并且要注意,工作文件夹并不一定是源代码所在的位置。所以文件系统操作之前,先设置工作文件夹是很有必要的。
pwd
该命令返回当前的工作文件夹
cd
设置工作文件夹
· 不设定参数时,直接切换到用户目录 · 支持绝对路径和相对路径 · 中等规模程序不应多次使用该命令,很容易出错 · 多线程程序中,切换操作对所以线程都生效
文件列表
glob:以列表形式返回符合条件的文件名
用法:glob ?预设参数? ?筛选条件 ...?
· 筛选条件与 string match 规则一样(*号、?号…) · 跨平台程序要注意 glob 在各系统上的差别 · 默认情况下,没有适合的文件会报错 · 返回的列表,可以进一步处理,比如 lsort 排序
预设参数:
-directory 返回指定目录文件列表
-path 返回以指定路径开头的文件列表
-tails 搭配上面两个参数使用,只返回文件名
-type 参数 (也可以写 -types ) 以特定模式筛选文件/子文件夹
d 文件夹, f 文件, s 套接字socket,r-可读, w-可写, x-可执行, readonly-只读, hidden-隐藏
似乎是Unix系专用参数:b 块设备,c 字符设备,l 软链接,p 命名管道
file命令
文件系统相关功能大杂烩
文件操作
file copy 复制文件
file delete 删除文件或目录
file mkdir 创建目录
file rename 重命名或移动文件/目录
file tempfile 创建临时文件,并返回该文件通道(读写)的名称
属性信息
file atime 以Unix时间戳形式,返回/设置文件的访问时间
file mtime 以Unix时间戳的形式返回文件的修改时间
file size 以字节为单位,返回文件体积(用于目录时,返回0)
file system 返回文件所属的文件系统
file attributes 返回/设置文件属性信息(不同操作系统有差异)
file stat 把文件/符号链接的信息保存在数组里
file lstat 在支持的系统上返回符号链接的信息(链接本身,不是链接指向的文件),在不支持的系统上,作用与file stat相同。Win平台从Vista开始支持(仅限NTFS文件系统)
路径处理
file dirname 返回文件路径里,去除最后一个元素外的内容
file extension 尝试返回文件扩展名(路径里最后一个点和后面的内容),否则返回空字符
file join 把多个字符串组合成路径(出现/时,前面不能被组合的部分会丢弃)
file split 拆分文件路径
file nativename 返回当前操作系统的本地化路径
file normalize 返回文件的绝对路径(即:把相对路径转换为绝对路径)
file rootname 去掉文件路径末尾的后缀名
file tail 返回文件路径中最后的部分
file separator 返回本地系统的路径分隔符
识别&验证
file exists 文件是否存在
file executable 验证文件是否为可执行程序
file isdirectory 文件或目录名
file isfile 文件或目录名
file readable 当前用户是否有读取权限
file writable 当前用户是否有写入权限
file owned 是否为文件所有者
file type 验证目标是目录还是文件,Unix/Linux上还可能是socket套接字
file pathtype 返回文件路径形式:absolute绝对路径、relative相对路径、volumerelative卷相对路径
其它
file link:创建Unix文件链接(win系统可以创建目录链接/NTFS文件链接)
file readlink 返回符号链接所指向的文件
file channels 返回通道名(默认以列表形式返回全部通道)
file volumes 返回已经挂载的文件卷,win平台返回盘符