LispWorks fast-directory-files
с функциями fdf-handle-*
кажутся очень многообещающими. Быстрый доступ к файлам в каталоге на странице руководства LispWorks гласит:
fast-directory-files дает более быстрый способ доступа к файлам, чем directory , особенно в ситуациях, когда вам нужно фильтровать на основе простых функций, таких как размер и время доступа, или фильтровать на основе имени более сложным способом, чем directory can.
Я пытаюсь понять, как их можно использовать, но я сталкиваюсь с некоторой непрозрачностью в документации, помимо того, что я довольно новичок в Common Lisp.
Скажем, какНапример, можно получить размер файла, используя fdf-handle-size
.Подробная справочная страница не содержит примеров, и текст кажется немного кратким.Например,
К fdf-handle могут получить доступ следующие читатели.Функции, названные в скобках, будут возвращать одно и то же значение при вызове по полному пути файла:
fdf-handle-size возвращает размер файла в байтах.
[и т. д.]
Примечания говорит,
fdf-handle может использоваться только в динамическом объемеобратного вызова, к которому он был передан.
Методом проб и ошибок я дошел до этой точки (конечно, неправильно):
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-*
функциями в целом?