kobapan@wiLiki
Login
Gauche

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

Debian
Emacs
Firefox
Gauche
JavaScript
Linux
Scheme
org-mode/latex

More ...