欢迎光临散文网 会员登陆 & 注册

2022年的 Tcl/Tk 编程入门参考 12.文件系统

2022-05-06 10:17 作者:象喻  | 我要投稿

编程语言的文件系统功能几乎都依托于操作系统,而大部分语言都可以在多种操作系统中使用,所以能用同样的代码在不同系统中进行相同的操作。但是很遗憾,语言之间并没有对同类功能的命令、函数、方法进行统一,所以每种语言都要重新学一遍。实际上早在上个世纪就有公司开发过跨语言扩展库,不同的语言只要引入同名扩展库,就能用近似的代码对常见功能编程(当然,语法部分是不同的)。但由于都是商业化产品,跟语言开发组无关,每次语言升级也不一定能平滑更新,可靠性得不到保障(毕竟那个时代,语言本身还一堆Bug),最后就都自生自灭了。

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平台返回盘符

 




2022年的 Tcl/Tk 编程入门参考 12.文件系统的评论 (共 条)

分享到微博请遵守国家法律