本文主要是介绍newLISP 递归访问目录树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个简单的递归函数,可以遍历目录树中的所有文件,传递另一个处理函数,该函数可以接受文件路径作为参数,从而决定如何处理。
下面是调用例子:
#!/usr/bin/newlisp(load "file.lsp")
(define (show-file file-path)(println (string file-path ": " (file-info file-path))))
(FILE:recursive-access-dir "/opt/" show-file)(exit)
recursive-access-dir就是递归函数, show-file是另一个函数,显示了接收的文件路径和file-info信息。
(context 'FILE)(define (recursive-access-dir dir-path file-op)(dolist (nde (directory dir-path {^[^.]}))(if (directory? (append dir-path nde))(recursive-access-dir (append dir-path nde "/") file-op)(file-op (append dir-path nde)))))
注意:
正则表达式 ^[^.] 代表只查找不以.开头的文件或者目录,因此排除了. 和 ..
该递归算法是深度优先算法,一旦发现一个目录,一定会将其下的所有路径都遍历完才会返回到开始, 然后才处理下一个兄弟目录。
这篇关于newLISP 递归访问目录树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!