Function PATHNAME-HOST, PATHNAME-DEVICE, PATHNAME-DIRECTORY, PATHNAME-NAME, PATHNAME-TYPE, PATHNAME-VERSION

UP


Function PATHNAME-HOST, PATHNAME-DEVICE, PATHNAME-DIRECTORY, PATHNAME-NAME, PATHNAME-TYPE, PATHNAME-VERSION

Function PATHNAME-HOST PATHNAME-DEVICE, PATHNAME-DIRECTORY, PATHNAME-NAME, PATHNAME-TYPE, PATHNAME-VERSION

構文

pathname-host pathname &key case => host
pathname-device pathname &key case => device
pathname-directory pathname &key case => directory
pathname-name pathname &key case => name
pathname-type pathname &key case => type
pathname-version pathname => version

引数と戻り値

pathname - パス名指定子
case - :common:localのうちのひとつ。デフォルトは:localです。
host - 有効なパス名のホスト。
device - 有効なパス名のデバイス。
directory - 有効なパス名のディレクトリ。
name - 有効なパス名の名前。
type - 有効なパス名の型。
version - 有効なパス名のバージョン。

定義

これらの関数はpathnameの要素を返却します。

もしpathname指定子がパス名(おそらくストリームの誤字)のとき、 それはオープンされているファイルによって使用されている名前が表現されます。 これはおそらく、要求はされていませんが、 実際のファイルの名前です。

もしcaseが指定されたとき、 それは19.2.2.1.2. パス名の要素の大文字小文字の説明のように扱われます。

例文

(setq q (make-pathname :host "KATHY"
                       :directory "CHAPMAN" 
                       :name "LOGIN" :type "COM"))
=>  #P"KATHY::[CHAPMAN]LOGIN.COM"
(pathname-host q) =>  "KATHY"
(pathname-name q) =>  "LOGIN"
(pathname-type q) =>  "COM"

;; 名前文字列を使用するため、例で示した結果が唯一の可能な結果で
;; あるとは限りません。名前文字列の表現からパス名表現へのマッピングは、
;; 関係するファイルシステムと実装の両方に依存します(同じファイルシステムを
;; 操作できる実装が複数存在し、それらの実装はすべての詳細について合意する
;; 制約がないため)。名前文字列がどのように扱われるかについての
;; 具体的な情報は、各実装のドキュメントを参照してください。

;; VMS
(pathname-directory (parse-namestring "[FOO.*.BAR]BAZ.LSP"))
=>  (:ABSOLUTE "FOO" "BAR")
(pathname-directory (parse-namestring "[FOO.*.BAR]BAZ.LSP") :case :common)
>  (:ABSOLUTE "FOO" "BAR")

;; Unix
(pathname-directory "foo.l") =>  NIL
(pathname-device "foo.l") =>  :UNSPECIFIC
(pathname-name "foo.l") =>  "foo"
(pathname-name "foo.l" :case :local) =>  "foo"
(pathname-name "foo.l" :case :common) =>  "FOO"
(pathname-type "foo.l") =>  "l"
(pathname-type "foo.l" :case :local) =>  "l"
(pathname-type "foo.l" :case :common) =>  "L"
(pathname-type "foo") =>  :UNSPECIFIC
(pathname-type "foo" :case :common) =>  :UNSPECIFIC
(pathname-type "foo.") =>  ""
(pathname-type "foo." :case :common) =>  ""
(pathname-directory (parse-namestring "/foo/bar/baz.lisp") :case :local)
=>  (:ABSOLUTE "foo" "bar")
(pathname-directory (parse-namestring "/foo/bar/baz.lisp") :case :local)
=>  (:ABSOLUTE "FOO" "BAR")
(pathname-directory (parse-namestring "../baz.lisp"))
=>  (:RELATIVE :UP)
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/BAR/../Mum/baz"))
=>  (:ABSOLUTE "foo" "BAR" :UP "Mum")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/BAR/../Mum/baz") :case :common)
=>  (:ABSOLUTE "FOO" "bar" :UP "Mum")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/*/bar/baz.l"))
=>  (:ABSOLUTE "foo" :WILD "bar")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/*/bar/baz.l") :case :common)
=>  (:ABSOLUTE "FOO" :WILD "BAR")

;; Symbolics LMFS
(pathname-directory (parse-namestring ">foo>**>bar>baz.lisp"))
=>  (:ABSOLUTE "foo" :WILD-INFERIORS "bar")
(pathname-directory (parse-namestring ">foo>*>bar>baz.lisp"))
=>  (:ABSOLUTE "foo" :WILD "bar")
(pathname-directory (parse-namestring ">foo>*>bar>baz.lisp") :case :common)
=>  (:ABSOLUTE "FOO" :WILD "BAR")
(pathname-device (parse-namestring ">foo>baz.lisp")) =>  :UNSPECIFIC

影響

実装とホストファイルシステム。

例外

最初の引数がパス名でないときは 型type-errorのエラーを通知するべきです。

参考

pathname, logical-pathname, 20.1. ファイルシステムの説明, 19.1.2. ファイル名としてのパス名

備考

なし。


TOP, Github