首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LispWorks的快速目录文件与fdf-句柄-*函数?

如何使用LispWorks的快速目录文件与fdf-句柄-*函数?
EN

Stack Overflow用户
提问于 2019-07-07 12:25:25
回答 1查看 87关注 0票数 0

LispWorks的带有fdf-handle-*函数的fast-directory-files看起来非常有希望。对目录中文件的快速访问手册中的LispWorks页面说,

快速目录-文件提供了一种比目录更快的访问文件的方式,特别是当你需要根据简单的特性(如大小和访问时间)进行过滤,或者以比目录更复杂的方式根据名称进行过滤时。

我正在努力理解如何使用它们,但是除了对Common非常陌生之外,我还遇到了一些文档方面的不透明性。

例如,我们希望使用fdf-handle-size获取文件的文件大小。详细手册页没有提供任何例子,文本看起来也有点简洁。例如,

以下读取器可以访问fdf句柄。在文件的完整路径上调用时,括号中指定的函数将返回相同的值: fdf-handle-size以字节为单位返回文件的大小。 等。

笔记上写着,

fdf-句柄只能在传递它的回调的动态范围内使用。

通过反复试验,我得出了这一点(当然是错的):

代码语言:javascript
复制
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-filesfdf-handle-*函数一起使用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 21:51:43

上面的片段不返回回调的输出。因此

代码语言:javascript
复制
(let (file-size)
  (fast-directory-files "/temp/a.txt"
                        #'(lambda (path handle)
                           (push (fdf-handle-size handle) file-size)))
  file-size)

将导致目录中所有文件的文件大小列表。

还请注意,快速目录文件接受dir路径名,目的是处理目录中的所有文件,因此a.txt被忽略。

如果您只需要一个文件的大小-打开它并使用文件长度(当然要注意元素大小)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56922139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档