2022年的 Tcl/Tk 編程入門參考 12.文件系統(tǒng)
Tcl語言在不同操作系統(tǒng)上的差異主要是文件路徑方面,具體請查看官方文檔:
Tcl/Tk文檔 > Tcl Commands > filename
· TCL語言內(nèi)部使用Unix風(fēng)格的文件路徑
· 支持絕對路徑和相對路徑(包括文件卷)
· 跨平臺程序應(yīng)使用file命令進行路徑拼接
· Win形式需連寫兩個 \ ,比如 C:\\Users\\name
工作文件夾
Tcl語言有默認的工作文件夾(也叫工作目錄),也就是文件操作類代碼生效的文件夾(比如創(chuàng)建文件之類),并且要注意,工作文件夾并不一定是源代碼所在的位置。所以文件系統(tǒng)操作之前,先設(shè)置工作文件夾是很有必要的。
pwd
該命令返回當前的工作文件夾
cd
設(shè)置工作文件夾
· 不設(shè)定參數(shù)時,直接切換到用戶目錄 · 支持絕對路徑和相對路徑 · 中等規(guī)模程序不應(yīng)多次使用該命令,很容易出錯 · 多線程程序中,切換操作對所以線程都生效
文件列表
glob:以列表形式返回符合條件的文件名
用法:glob ??預(yù)設(shè)參數(shù)? ??篩選條件 ...?
· 篩選條件與 string match 規(guī)則一樣(*號、?號…) · 跨平臺程序要注意 glob 在各系統(tǒng)上的差別 · 默認情況下,沒有適合的文件會報錯 · 返回的列表,可以進一步處理,比如 lsort 排序
預(yù)設(shè)參數(shù):
-directory 返回指定目錄文件列表
-path 返回以指定路徑開頭的文件列表
-tails 搭配上面兩個參數(shù)使用,只返回文件名
-type 參數(shù) (也可以寫 -types ) ?以特定模式篩選文件/子文件夾
d 文件夾, f 文件, s 套接字socket,r-可讀, w-可寫, x-可執(zhí)行, readonly-只讀, hidden-隱藏
似乎是Unix系專用參數(shù):b 塊設(shè)備,c 字符設(shè)備,l 軟鏈接,p 命名管道
?
file命令
文件系統(tǒng)相關(guān)功能大雜燴
文件操作
file copy 復(fù)制文件
file delete 刪除文件或目錄
file mkdir 創(chuàng)建目錄
file rename 重命名或移動文件/目錄
file tempfile 創(chuàng)建臨時文件,并返回該文件通道(讀寫)的名稱
?
屬性信息
file atime 以Unix時間戳形式,返回/設(shè)置文件的訪問時間
file mtime 以Unix時間戳的形式返回文件的修改時間
file size 以字節(jié)為單位,返回文件體積(用于目錄時,返回0)
file system 返回文件所屬的文件系統(tǒng)
file attributes 返回/設(shè)置文件屬性信息(不同操作系統(tǒng)有差異)
file stat 把文件/符號鏈接的信息保存在數(shù)組里
file lstat 在支持的系統(tǒng)上返回符號鏈接的信息(鏈接本身,不是鏈接指向的文件),在不支持的系統(tǒng)上,作用與file stat相同。Win平臺從Vista開始支持(僅限NTFS文件系統(tǒng))
?
路徑處理
file dirname 返回文件路徑里,去除最后一個元素外的內(nèi)容
file extension 嘗試返回文件擴展名(路徑里最后一個點和后面的內(nèi)容),否則返回空字符
file join 把多個字符串組合成路徑(出現(xiàn)/時,前面不能被組合的部分會丟棄)
file split 拆分文件路徑
file nativename 返回當前操作系統(tǒng)的本地化路徑
file normalize 返回文件的絕對路徑(即:把相對路徑轉(zhuǎn)換為絕對路徑)
file rootname 去掉文件路徑末尾的后綴名
file tail 返回文件路徑中最后的部分
file separator 返回本地系統(tǒng)的路徑分隔符
?
識別&驗證
file exists 文件是否存在
file executable 驗證文件是否為可執(zhí)行程序
file isdirectory 文件或目錄名
file isfile 文件或目錄名
file readable 當前用戶是否有讀取權(quán)限
file writable 當前用戶是否有寫入權(quán)限
file owned 是否為文件所有者
file type 驗證目標是目錄還是文件,Unix/Linux上還可能是socket套接字
file pathtype 返回文件路徑形式:absolute絕對路徑、relative相對路徑、volumerelative卷相對路徑
?
其它
file link:創(chuàng)建Unix文件鏈接(win系統(tǒng)可以創(chuàng)建目錄鏈接/NTFS文件鏈接)
file readlink 返回符號鏈接所指向的文件
file channels 返回通道名(默認以列表形式返回全部通道)
file volumes 返回已經(jīng)掛載的文件卷,win平臺返回盤符
?