Tcl/Tk: 文件与目录操作

风行水上 @ 2009-03-26 15:55:11
标签:

    Tcl 中的文件系统操作

    文件测试

    file exists $name        ; # 判断文件是否**存在**
    file isdirectory $name   ; # 判断文件是否是**目录**
    file isfile $name        ; # 判断文件是否是**文件**
    
    file readable $name      ; # 判断文件是否**可读**
    file writable $name      ; # 判断文件是否**可写**
    file executable $name    ; # 判断文件是否**可执行**
    file owned $name 
    

    文件路径、文件名

    set name /path/a/b/c.txt
    
    file extension $name             ; #   .txt
    file dirname $name               ; #  /path/a/b
    file rootname $name              ; #  /path/a/b/c
    file tail $name                  ; # c.txt
    
    file nativename $name            ; # 系统默认格式的文件名
    

    文件信息

    set name /path/a/b/c.txt
    
    file size $name        ; # 单位 字节(bytes)
    file stat $name finfo  
    array get finfo *      ; # {atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uid} 
    
    file separator         ; # 系统支持的文件路径分隔符
    

    文件操作

    file mkdir $name              ; # mkdir -p $name  创建目录,自动创建父目录
    
    file copy $source $target     ; # copy 文件: cp $source $target
    
    file delete $path             ; # 删除文件 rm $path
    file delete --force $path     ; # 强制删除非空目录  rm -rf $path
    
    file rename $source $target   ; # mv $source $target
    
    

    获取链接(link)的最终目标文件

    在copy操作中,如果遇到 link,而link的目标文件又是相对路径的时候,就需要找到link所最终指向的文件。

    proc file_read_link {file} {
      while {[file type $file] == "link"} {
         set file [file join [file dirname $file] [file readlink $file]]
      }
      return $file
    }
    

    巧妙地利用了 file join 的特性省略了对目标文件是相对路径还是全路径的判断。

    标签:

      分享到:
      comments powered by Disqus

      27/31ms