D 1.0   D 2.0
About Japanese Translation

Last update Mon May 11 15:09:58 2009

std.path

このモジュールはファイル名の構文解析に使用されます。 全ての操作は文字列に対して行われ、入出力処理は伴いません。 たとえば、path がdotを含んだディレクトリ名であった場合、 getExt() のような関数は単にファイルに対して動作するように動作します。 ディレクトリとファイルの切り分けなどを行いたい場合は、 std.file モジュール (std.file.isDir()) をまず使用します。 Authors:
Walter Bright, Grzegorz Adam Hankiewicz, Thomas Kühne, Andrei Alexandrescu
const char[1] sep;
パス中でのディレクトリ区切り文字。 Windowsではバックスラッシュで、Linuxではスラッシュです。

const char[1] altsep;
sep[] の代替文字。 Windowsではスラッシュで、Linuxでは空です。

const char[1] pathsep;
パスとパスの区切り文字。 Windowsではセミコロンで、Linuxではコロンです。

const char[2] linesep;
行区切り文字。 Windowsでは \r\n で、Linuxでは \n です。

const(char)[1] curdir;
現在のディレクトリを指すパス文字列

const(char)[2] pardir;
親ディレクトリを指すパス文字列

alias fcmp;
ファイル名の比較

Returns:
< 0 filename1 < filename2
= 0 filename1 == filename2
> 0 filename1 > filename2


string getExt(string fullname);
ファイルネームからパスから拡張子を取得します。

この関数は、文字列 fullname の末尾から見て最初のドットを探します。 パス区切り文字や fullname の先頭が見つかった場合、探索は終了します。 Windowsでは、ドライブ文字区切り文字 (コロン) でも探索を終了します。

Returns:
ドット文字がある場合、その右の文字列が返されます。 パス区切り文字がある場合、もしくは fullname が ドットもパス区切り文字も含まない場合、null を返します。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     getExt(r"d:\path\foo.bat") // "bat"
     getExt(r"d:\path.two\bar") // null
 }
 version(Posix)
 {
     getExt(r"/home/user.name/bar.")  // ""
     getExt(r"d:\\path.two\\bar")     // "two\\bar"
     getExt(r"/home/user/.resource")  // "resource"
 }


string getName(string fullname);
拡張子抜きの名前部分を取得します。

この関数は、文字列 fullname の末尾から見て最初のドットを探します。 パス区切り文字や fullname の先頭が見つかった場合、探索は終了します。 Windowsでは、ドライブ文字区切り文字 (コロン) でも探索を終了します。

Returns:
ドット文字がある場合、その左の文字列が返されます。 パス区切り文字が先に見つかった場合、あるいは fullname が ドットもパス区切り文字も含まない場合 null を返します。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     getName(r"d:\path\foo.bat") => "d:\path\foo"
     getName(r"d:\path.two\bar") => null
 }
 version(Posix)
 {
     getName("/home/user.name/bar.")  => "/home/user.name/bar"
     getName(r"d:\path.two\bar") => "d:\path"
     getName("/home/user/.resource") => "/home/user/"
 }


string getBaseName(string fullname);
名前部分を取得します。

この関数は、文字列 fullname の末尾から見て最初の パス区切り文字を探します。fullname の先頭が見つかった場合、探索は終了します。 Windowsでは、ドライブ文字区切り文字 (コロン) でも探索を終了します。

Returns:
パス部分を取り除いて残った 右側の文字列を返します。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     getBaseName(r"d:\path\foo.bat") => "foo.bat"
 }
 version(Posix)
 {
     getBaseN("/home/user.name/bar.")  => "bar."
 }


string getDirName(string fullname);
ディレクトリ名の取得。

この関数は、文字列 fullname の末尾から見て最初の パス区切り文字を探します。fullname の先頭が見つかった場合、探索は終了します。 Windowsでは、ドライブ文字区切り文字 (コロン) でも探索を終了します。

Returns:
パス区切り文字が見つかった場合、その左の文字列が返されます。 それ以外の場合、fullname が返ります。

Windowsの場合は、直前にコロンがある場合、 見つかったパス区切り文字自体も返値に含まれます。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     getDirName(r"d:\path\foo.bat") => "d:\path"
     getDirName(dirname(r"d:\path\foo.bat")) => r"d:\"
 }
 version(Posix)
 {
     getDirName("/home/user")  => "/home"
     getDirName(getDirName("/home/user"))  => ""
 }


string getDrive(string fullname);
ドライブ名の取得。

この関数は fullname の先頭からコロンを検索します。

Returns:
コロンが見つかると、その左の文字列とコロンを返します。 見つからなかった場合は、null を返します。

Linux では、この関数は常に null を返します。

Throws:
Nothing.

Examples:
 getDrive(r"d:\path\foo.bat") => "d:"


string defaultExt(string filename, string ext);
fullnameに拡張子がなかった場合、extを付け加えます。

この関数は filename の中から拡張子部分を探し、 なければ ext を付け加えます。ext には先頭にドットを含める必要はなく、 挿入時に filenameext の間に 関数側でドットが追加されます

Returns:
拡張子があれば filename、なければ filename + ext を返します。

Throws:
Nothing.

Examples:
 defaultExt("foo.txt", "raw") => "foo.txt"
 defaultExt("foo.", "raw") => "foo.raw"
 defaultExt("bar", "raw") => "bar.raw"


string addExt(string filename, string ext);
拡張子の付け替え。

この関数は filename の中から拡張子を探し、見つかった場合は ext に置き換えます。拡張子が無かった場合は、ext が追加されます。ext には先頭にドットを含める必要はなく、 挿入時に filenameext の間に 関数側でドットが追加されます

Returns:
filename が拡張子なしなら filename + ext を、 拡張子ありなら filename の拡張子を除いたものに ext を付け加えた 結果を返します。

Throws:
Nothing.

Examples:
 addExt("foo.txt", "raw") => "foo.raw"
 addExt("foo.", "raw") => "foo.raw"
 addExt("bar", "raw") => "bar.raw"


int isabs(string path);
path が絶対パスかどうかを判定します。

Returns:
path がルートディレクトリ(Linuxの場合)か、 ドライブ文字ないしはルートディレクトリ(Windowsの場合)から始まる場合は 非ゼロ、それ以外ならゼロが返されます。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     isabs(r"relative\path") => 0
     isabs(r"\relative\path") => 0
     isabs(r"d:\absolute") => 1
 }
 version(Posix)
 {
     isabs("/home/user") => 1
     isabs("foo") => 0
 }


string join(string p1, string p2);
二つのパス構成要素を p1p2 を結合して返します。

p1 の末尾がパス区切り文字でない場合は、 p2 との結合の前に追加されます。

Returns:
p1 ~ p2 を返します。ただし、p2 が絶対パスの場合は、 単に p2 が返されます。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     join(r"c:\foo", "bar") => "c:\foo\bar"
     join("foo", r"d:\bar") => "d:\bar"
 }
 version(Posix)
 {
     join("/foo/", "bar") => "/foo/bar"
     join("/foo", "/bar") => "/bar"
 }


int fncharmatch(dchar c1, dchar c2);
ファイル名文字として二つの文字がマッチするかどうかの判定。

Windows では、大文字小文字の違いを無視して比較します。Linux では、 完全マッチングが行われます。

Returns:
c1c2 がマッチするなら非ゼロ、それ以外ならゼロを返します。

Throws:
Nothing.

Examples:
 version(Win32)
 {
     fncharmatch('a', 'b') => 0
     fncharmatch('A', 'a') => 1
 }
 version(Posix)
 {
     fncharmatch('a', 'b') => 0
     fncharmatch('A', 'a') => 0
 }


int fnmatch(string filename, string pattern);
ファイル名文字列と pattern[] がマッチするかを判断します。

パターン中の幾つかの文字(メタ文字)は特殊な意味を持ち、 エスケープすることはできません。メタ文字の一覧は:

* 0文字かそれ以上の文字列
? 任意の1文字
[chars] [ と ] の間に書かれた任意の1文字
[!chars] [! と ] の間に書かれていない任意の1文字

内部的には個々の文字の比較は fncharmatch() を呼び出して行われますので、 そちらの規則もここで使用されます。 パス区切り文字とドットも、 メタ文字によるマッチを止めないことに注意が必要です。

Returns:
pattern がマッチした場合非ゼロを、それ以外ではゼロを返します。

See Also:
fncharmatch().

Throws:
Nothing.

Examples:

 version(Win32)
 {
     fnmatch("foo.bar", "*") => 1
     fnmatch(r"foo/foo\bar", "f*b*r") => 1
     fnmatch("foo.bar", "f?bar") => 0
     fnmatch("Goo.bar", "[fg]???bar") => 1
     fnmatch(r"d:\foo\bar", "d*foo?bar") => 1
 }
 version(Posix)
 {
     fnmatch("Go*.bar", "[fg]???bar") => 0
     fnmatch("/foo*home/bar", "?foo*bar") => 1
     fnmatch("foobar", "foo?bar") => 1
 }


string expandTilde(string inputPath);
パス中のチルダを展開します。

チルダの展開には、二種類あります。 ひとつは、単独のチルダや直後にパス区切り記号が続く場合。 この場合は、チルダは環境変数 HOME へと展開されます。 もうひとつは、チルダの後にユーザー名が続く場合です (例えば ~john/Mail)。この場合は、 ユーザー名がユーザーデータベース(例えばUnixでの/etc/passwd) から検索され、そこに指定されたパスへと展開されます。 チルダの直後から 次のパス区切り記号までの文字列を、 ユーザー名として扱います。

環境変数に指定された値とユーザーデータベースに格納された値が異なる場合、 ~user 構文と単なる ~ は、 違う値を返す可能性があることに注意してください。

環境変数バージョンが使われる場合、 環境変数が存在しないか空ならばパスは置き換えられません。 データベースバージョンが使われる場合、 ユーザーが存在しない時やクエリに必要なメモリが不足しているときは、 パスは置き換えられません。

Returns:
inputPath のチルダを展開したもの、もしくは、 展開できなかった場合 inputPath をそのまま返します。 Windows環境では、expandTilde() は単に引数 inputPath を返します。

Throws:
~user 構文のデータベース検索に必要なメモリが確保できなかった場合、 std.outofmemory.OutOfMemoryException 例外が投げられます。

Examples:
 import std.path;

 void process_file(string filename)
 {
     string path = expandTilde(filename);
     ...
 }
 import std.path;

 const string RESOURCE_DIR_TEMPLATE = "~/.applicationrc";
 string RESOURCE_DIR;    // この文字列が main() 内で展開される

 int main(string[] args)
 {
     RESOURCE_DIR = expandTilde(RESOURCE_DIR_TEMPLATE);
     ...
 }


Version:
v0.143 以降で使用可能です

Authors:
Grzegorz Adam Hankiewicz, Thomas Kühne.