LispWorks的带有fdf-handle-*函数的fast-directory-files看起来非常有希望。对目录中文件的快速访问手册中的LispWorks页面说,
快速目录-文件提供了一种比目录更快的访问文件的方式,特别是当你需要根据简单的特性(如大小和访问时间)进行过滤,或者以比目录更复杂的方式根据名称进行过滤时。
我正在努力理解如何使用它们,但是除了对Common非常陌生之外,我还遇到了一些文档方面的不透明性。
例如,我们希望使用fdf-handle-size获取文件的文件大小。详细手册页没有提供任何例子,文本看起来也有点简洁。例如,
以下读取器可以访问fdf句柄。在文件的完整路径上调用时,括号中指定的函数将返回相同的值: fdf-handle-size以字节为单位返回文件的大小。 等。
笔记上写着,
fdf-句柄只能在传递它的回调的动态范围内使用。
通过反复试验,我得出了这一点(当然是错的):
CL-USER 1 > (let (file-size)
(fast-directory-files "/temp/a.txt"
#'(lambda (path handle)
(push (fdf-handle-size handle) file-size))))
("save.lisp" "a.txt" "a.lisp")如何获得/temp/a.txt的文件大小?更重要的是,人们应该如何将LispWorks‘fast-directory-files与fdf-handle-*函数一起使用呢?
发布于 2019-07-08 21:51:43
上面的片段不返回回调的输出。因此
(let (file-size)
(fast-directory-files "/temp/a.txt"
#'(lambda (path handle)
(push (fdf-handle-size handle) file-size)))
file-size)将导致目录中所有文件的文件大小列表。
还请注意,快速目录文件接受dir路径名,目的是处理目录中的所有文件,因此a.txt被忽略。
如果您只需要一个文件的大小-打开它并使用文件长度(当然要注意元素大小)。
https://stackoverflow.com/questions/56922139
复制相似问题