CL-FADサンプル

published:

2011-12-10

created:

2011-12-10

概要

CL-FAD は Common Lisp で ディレクトリやパス関連の判定を簡単にするためのライブライです。

簡単な物なら自作しても問題ないですが、汎用性をもたせるなら利用してしまった方が早いです。

サイト

CL-FAD - A portable pathname library for Common Lisp

インストール

Quicklisp を利用します。

;; 検索
(ql:system-apropos "cl-fad")
;; インストール
(ql:quickload "cl-fad")

Function一覧

  1. directory-pathname-p

  2. pathname-as-directory

  3. pathname-as-file

  4. file-exists-p

  5. directory-exists-p

  6. list-directory

  7. walk-directory

  8. delete-directory-and-files

  9. copy-file

  10. copy-stream

利用方法

list-directory を利用して、ディレクトリの内容一覧を表示してみます。

;; list-directoryだけ読み込んで実行してみます
(import '(cl-fad:list-directory))
;; ディテクトリを指定します
(list-directory #p"~/.emacs.d")

簡単です。

全部を読み込む場合は 'require' を利用します。

;; require
(require :cl-fad)
;; namespace が必要です
(cl-fad:list-directory #p"~/.emacs.d")

directory-pathname-p は NIL か フルパスを返します

(cl-fad:directory-pathname-p "~/.emacs.d/")
;; p#"/path/to/.emacs.d/"

pathname-as-directory は 引数をディレクトリとしてパス形式に変換します

(cl-fad:pathname-as-directory "a")
;; p#"a/"

pathname-as-file は 引数をファイルとしてパス形式に変換します

(cl-fad:pathname-as-directory "a/")
;; p#"a"

file-exists-p はファイルの存在チェック

(cl-fad:file-exists-p "~/.emacs.d/")
;; #p"/path/to/.emacs.d/"

directory-exists-p はディレクトリ存在チェック

(cl-fad:directory-exists-p "~/.emacs.d/")
;; #p"/path/to/.emacs.d/"

walk-directory はディレクトリ内を再帰的に表示します。パスと関数を渡す必要があります

(cl-fad:walk-directory
   #p"~/.emacs.d/site-start.d"
   (lambda (file)
     ;; ファイルで拡張子 el な物だけ表示
     (when (string-equal (pathname-type file) "el")
       (fresh-line)
       (princ file))))

delete-directory-and-files はディレクトリ、ファイルを削除します

;; サンプル無し

copy-file はファイルをコピーします。デフォルトはコピー先を上書きしません(NIL)

(cl-fad:copy-file "~/work/hoge.txt" "~/work/hoge2.txt")

copy-stream はストリームをコピーします

;; サンプル無し

以上です。