Common lisp 如何使用LispWorks';具有fdf handle-*函数的快速目录文件?
LispWorks的Common lisp 如何使用LispWorks';具有fdf handle-*函数的快速目录文件?,common-lisp,filepath,lispworks,Common Lisp,Filepath,Lispworks,LispWorks的快速目录文件和fdf句柄-*函数似乎非常有前途。LispWorks手册中的一页说 快速目录文件提供了一种比目录更快的访问文件的方法,特别是在需要基于简单功能(如大小和访问时间)进行筛选,或者需要以比目录更复杂的方式基于名称进行筛选的情况下 我试图理解如何使用它们,但我在文档中遇到了一些不透明的地方,除了我对CommonLisp还很陌生之外 例如,我们希望使用fdf handle size获取文件的文件大小。这篇文章没有提供任何例子,正文似乎有点简练。比如说, 以下读卡器可以访
快速目录文件
和fdf句柄-*
函数似乎非常有前途。LispWorks手册中的一页说
快速目录文件提供了一种比目录更快的访问文件的方法,特别是在需要基于简单功能(如大小和访问时间)进行筛选,或者需要以比目录更复杂的方式基于名称进行筛选的情况下
我试图理解如何使用它们,但我在文档中遇到了一些不透明的地方,除了我对CommonLisp还很陌生之外
例如,我们希望使用fdf handle size
获取文件的文件大小。这篇文章没有提供任何例子,正文似乎有点简练。比如说,
以下读卡器可以访问fdf句柄。在文件的完整路径上调用时,括号中命名的函数将返回相同的值:
fdf handle size返回文件的大小(以字节为单位)
[等]
笔记上说
fdf句柄只能在其被传递到的回调的动态范围内使用
通过反复试验,我得出了这一点(当然错了):
如何获得
/temp/a.txt
的文件大小?更重要的是,通常如何将LispWorks的快速目录文件与fdf handle-*
函数一起使用?上面的代码段不会返回回调的输出。因此
(let (file-size)
(fast-directory-files "/temp/a.txt"
#'(lambda (path handle)
(push (fdf-handle-size handle) file-size)))
file-size)
将生成目录中所有文件的文件大小列表
还请注意,fast directory files接受dir路径名-其目的是处理目录中的所有文件,因此a.txt被忽略
如果只需要单个文件的大小,请打开它并使用文件长度(当然要注意元素的大小)。上面的代码段不会返回回调的输出。因此
(let (file-size)
(fast-directory-files "/temp/a.txt"
#'(lambda (path handle)
(push (fdf-handle-size handle) file-size)))
file-size)
将生成目录中所有文件的文件大小列表
还请注意,fast directory files接受dir路径名-其目的是处理目录中的所有文件,因此a.txt被忽略
如果您只需要单个文件的大小,请打开它并使用文件长度(当然要注意元素大小)。在代码段中,您没有显示回调的结果,您看到的是fast directory文件的结果,它返回有结果的文件列表。打印出文件大小,看看里面有什么你是对的,我忘了在最后一个括号前添加文件大小。我得到了(1119 0 1662)
,这是三个文件的大小。如何只过滤一个文件?这就是处理这些函数的惯用方法吗?我真的必须通过反复尝试才能到达那里,我不确定这种方式是否合适?@DavidHodge如果你能将你的评论变成一个答案,我可以投赞成票。在你的代码片段中,你没有显示回调的结果,你看到的是fast directory文件的结果,它返回有结果的文件列表。打印出文件大小,看看里面有什么你是对的,我忘了在最后一个括号前添加文件大小。我得到了(1119 0 1662)
,这是三个文件的大小。如何只过滤一个文件?这就是处理这些函数的惯用方法吗?我真的必须通过反复尝试才能到达那里,我不确定这种方式是否合适?@DavidHodge如果你能把你的评论变成一个答案,我可以投赞成票。谢谢你,也谢谢你关于处理单个文件的更多细节。谢谢你,也谢谢你关于处理单个文件的更多细节。