我们如何获取文件属性?我主要是希望获得大小,但也是它的最后访问时间和其他属性。
我只找到获得流的(file-length some-file)
,因此以这种方式使用:
(with-open-file (file "some file name")
(file-length file))
看起来正在做这项工作但是:
我在Osicat中看不到任何与文件长度或属性相关的内容。也许它是它的角色,我会填写一个功能请求?
Practical CL谈论文件长度并引用Osicat,就是这样。
CL cookbook上没有关于awesome-cl的更多信息,不再有“posix”或“file”相关资料。
我会很感激like in elisp。
感谢
编辑:可能在iolib上,但看起来its online doc未完成,并且没有谈论文件,即使它宣布拥有“路径名库和文件系统实用程序”。但显然它没有做我正在寻找的东西:https://github.com/sionescu/iolib/blob/master/src/os/os-unix.lisp
答案 0 :(得分:2)
使用Osicat,您可以在文件上调用stat
,并在结构中获得大量内容:
(describe (osicat-posix:stat #P"/tmp/file"))
#<OSICAT-POSIX:STAT {1004F20C93}>
[standard-object]
Slots with :INSTANCE allocation:
DEV = 2065
INO = 7349974
MODE = 33204
NLINK = 1
UID = 1000
GID = 1000
RDEV = 0
SIZE = 4304
BLKSIZE = 4096
BLOCKS = 16
ATIME = 1497626097
MTIME = 1497347216
CTIME = 1497347216
; No value
您可以使用以下功能访问不同的插槽:
osicat-posix:stat-dev
osicat-posix:stat-gid
osicat-posix:stat-ino
osicat-posix:stat-uid
osicat-posix:stat-mode
osicat-posix:stat-rdev
osicat-posix:stat-size
osicat-posix:stat-atime
osicat-posix:stat-ctime
osicat-posix:stat-mtime
osicat-posix:stat-nlink
osicat-posix:stat-blocks
osicat-posix:stat-blksize