Gauche:ファイル・ディレクトリ
目次
参考
ディレクトリユーティリティ | Gauche ユーザリファレンス
ファイル属性ユーティリティ | Gauche ユーザリファレンス
ファイルのタイプを示すシンボル | Gauche ユーザリファレンス
(use file.util)
directory-list
(directory-list "test") ; ⇒ ("." ".." "test.scm" "test.scm~")
(directory-list "test" :add-path? #t) ; ⇒ ("test/." "test/.." "test/test.scm" "test/test.scm~")
(directory-list "test" :children? #t) ; ⇒ ("test.scm" "test.scm~")
(directory-list "test" :children? #t :add-path? #t :filter (lambda (e) (not (string-suffix? "~" e)))) ; ⇒ ("test/test.scm")
directory-fold
(use srfi-13) ;; for string-suffix? (directory-fold path (lambda (entry result) (if (string-suffix? "~" entry) (cons entry result) result)) '()) ; -> 与えられたpath以下から"~"で終る名を持つファイルのリストを返す
(directory-fold path cons '() :lister (lambda (path seed) (values (directory-list path :add-path? #t :children? #t) (cons path seed)))) ; -> 与えられたpath以下全てのファイルとディレクトリ名をリストにして返す。 ; lister引数を使ってディレクトリ名そのものを結果に含めている。
デフォルトのlisterはdirectory-listを次のように呼び出すもの。
(lambda (path seed) (values (directory-list path :add-path? #t :children? #t) seed))
find-file-in-paths name :key paths pred
名前nameを持ち、述語predを満たすファイルをパス名のリストpaths から探す。 見つかった場合はファイルの絶対パス名を、見つからなかった場合は #fを返す。
(find-file-in-paths "userpref" :paths `(,(expand-path "~/.myapp") "/usr/local/share/myapp" "/usr/share/myapp") :pred file-is-readable?) ; -> アプリケーション"myapp"のユーザプレファレンスファイルを探す例
make-directory* / create-directory*
make-directory* name :optional perm
nameに至るパスが存在しない 場合は必要なディレクトリが作成されます (Unixのmkdir -pコマンドと 同様です)。ディレクトリnameが既に存在していた場合は何もしません。 permは作成されるディレクトリのパーミッションビットを指定します。
remove-directory* / delete-directory*
remove-directory* name
ディレクトリnameとその内容を再帰的に消去。シンボリックリンクは辿られない。
属性
(sys-dirname "d://Test") ; -> "d:\\"
(sys-basename "d://Test//development") ; -> "development"
(file-type "d://Test//development") ; -> directory
(file-exists? "d://Test//development//scheme") ; -> #t
Gauche Scheme Lisp