import "path"

pathパッケージは、スラッシュ区切りのファイルパスを操作するためのユーティリティルーチンを実装しています。

パッケージファイル

match.go path.go path_unix.go path_windows.go

定数

const (
    DirSeps    = `\/`                 // ディレクトリ区切り
    VolumeSeps = `:`                  // ヴォリューム区切り
    PathSeps   = DirSeps + VolumeSeps // 全てのパス区切り
)
const (
    DirSeps    = `/`                  // ディレクトリ区切り
    VolumeSeps = ``                   // ヴォリューム区切り
    PathSeps   = DirSeps + VolumeSeps // 全てのパス区切り
)

変数

var ErrBadPattern = os.NewError("syntax error in pattern")

Base関数

func Base(name string) string

Baseは、パスをスラッシュ区切りした一番最後の要素を返します。最後の要素を抽出する前に、最後部のスラッシュは除去されます。nameが空のときは、「.」が返ります。nameがスラッシュだけで構成されているときは、「/」が返ります。

Clean関数

func Clean(path string) string

Cleanは、パス要素の正規化処理を行いpathと等価で最も短いパス名を返します。これは、次のルールが適用できなくなるまで繰り返し処理されます。

1. 連続するスラッシュをひとつのスラッシュに置き換える。
2. パス名要素「.」(カレントディレクトリ)を取り除く。
3. パスの途中にあるパス名要素「..」(親ディレクトリ)を
   その前にある非..要素とともに取り除く。
4. ルートパスで始まるパス名要素「..」を取り除く。
   これはパスの先頭の「/..」を「/」に置換する。

この処理の結果空文字列となるときは、Cleanは文字列”.”を返します。

こちらも参照ください:Rob Pike著 “Lexical File Names in Plan 9 or Getting Dot-Dot right,” http://plan9.bell-labs.com/sys/doc/lexnames.html

Ext関数

func Ext(path string) string

Extは、ファイル名で使用されている拡張子を返します。拡張子はパスをスラッシュ区切りした一番最後の要素内の、一番後ろにあるドットで始まるサフィックスです。ドットがないときは空文字列が返ります。

Glob関数

func Glob(pattern string) (matches []string)

Globは、パターンとマッチするすべてのファイルの名前を返します。マッチするファイルが見つからないときはnilを返します。パターンの構文は、Matchで使われているものと同じです。このパターンには、/usr/*/bin/edのようにディレクトリ階層も記述できます。

IsAbs関数

func IsAbs(path string) bool

IsAbsは、pathが絶対パスのときtrueを返します。

Join関数

func Join(elem ...string) string

Joinは、複数のパス要素を必要があれば区切り文字のスラッシュを加えてひとつのパスに結合します。空文字列はすべて無視されます。

Match関数

func Match(pattern, name string) (matched bool, err os.Error)

Matchは、nameがシェルのファイル名パターンと一致したときにtrueを返します。下はpatternの構文です。

pattern:
	{ term }
term:
	'*'         /以外の文字の並びと一致
	'?'         /以外の一文字と一致
	'[' [ '^' ] { character-range } ']'
	            キャラクタクラス (空ではないこと)
	c           文字cと一致 (c != '*', '?', '\\', '[')
	'\\' c      文字cと一致

character-range:
	c           文字cと一致 (c != '\\', '-', ']')
	'\\' c      文字cと一致
	lo '-' hi   lo <= c <= hi である文字cと一致

Matchでは、名前の一部だけでなく名前のすべてがパターンと一致する必要があります。唯一報告されるエラーはパターンが不正なときだけです。

Split関数

func Split(path string) (dir, file string)

Splitは、パスを一番後ろのパス区切りの直後でディレクトリとファイル名に分割します。パス内に区切りがないときはdirには空のディレクトリ、fileにはpathの値が返されます。

Walk関数

func Walk(root string, v Visitor, errors chan<- os.Error)

Walkは、rootを基準にしたファイルツリー内を、ディレクトリとファイル毎にv.VisitDirおよびv.VisitFileを呼び出しながら移動します。v.VisitDirがfalseを返したときは、Walkはそのディレクトリエントリをスキップし、trueを返したときはその中にある各ディレクトリを格納順に処理します。ディレクトリを読み込んでいるときに発生したエラーはWalkを中断しません。error != nilのときにWalkはディレクトリの読み込みエラーをチャネルに送信し、nilのときはエラーを破棄します。

Visitor型

Visitorメソッドは、Walk関数によって抽出されるファイルツリー内のエントリ毎に呼び出されます。pathパラメータは、fのrootからのフルパスです。

type Visitor interface {
    VisitDir(path string, f *os.FileInfo) bool
    VisitFile(path string, f *os.FileInfo)
}