...

パッケージ os

概要 ▾

os パッケージは,オペレーティングシステム機能へのプラットフォーム非依存のインターフェースを提供します。 デザインは Unix に似ています。ただし,エラー処理は Go のスタイルです。呼び出し失敗の場合,エラーナンバーではなく, error 型の値を返します。 たいてい,エラーの中に多くの情報が含まれています。 例えば,Open や Stat のようにファイル名を渡す呼び出しが失敗した場合, エラーは *PathError 型で,失敗したファイル名だけでなく, ほかの情報も含んでいます。

os インターフェースは,すべてのオペレーティングシステムにわたって統一されることを目的としています。 一般に利用できない機能はシステム固有のパッケージ syscall にあります。

これは,ファイルを開いてその一部を読み取る簡単な例です。

file, err := os.Open("file.go") // 読み取りアクセス用
if err != nil {
	log.Fatal(err)
}

open が失敗した場合,エラー文字列は次のように一目瞭然です。

file.go を開く : そのようなファイルやディレクトリはありません

ファイルのデータはバイトスライスに読み込むことができます。 Read と Write は,引数スライスの長さからバイト数を取ります。

data := make([]byte, 100)
count, err := file.Read(data)
if err != nil {
	log.Fatal(err)
}
fmt.Printf("read %d bytes: %q\n", count, data[:count])

注 : ファイルに対する平行操作の最大数は, OS またはシステムによって制限される場合があります。数値は高くする必要がありますが,それを超えるとパフォーマンスが低下したり,他の問題が発生する可能性があります。

目次 ▾

定数
変数
func Chdir(dir string) error
func Chmod(name string, mode FileMode) error
func Chown(name string, uid, gid int) error
func Chtimes(name string, atime time.Time, mtime time.Time) error
func Clearenv()
func Environ() []string
func Executable() (string, error)
func Exit(code int)
func Expand(s string, mapping func(string) string) string
func ExpandEnv(s string) string
func Getegid() int
func Getenv(key string) string
func Geteuid() int
func Getgid() int
func Getgroups() ([]int, error)
func Getpagesize() int
func Getpid() int
func Getppid() int
func Getuid() int
func Getwd() (dir string, err error)
func Hostname() (name string, err error)
func IsExist(err error) bool
func IsNotExist(err error) bool
func IsPathSeparator(c uint8) bool
func IsPermission(err error) bool
func IsTimeout(err error) bool
func Lchown(name string, uid, gid int) error
func Link(oldname, newname string) error
func LookupEnv(key string) (string, bool)
func Mkdir(name string, perm FileMode) error
func MkdirAll(path string, perm FileMode) error
func NewSyscallError(syscall string, err error) error
func Pipe() (r *File, w *File, err error)
func Readlink(name string) (string, error)
func Remove(name string) error
func RemoveAll(path string) error
func Rename(oldpath, newpath string) error
func SameFile(fi1, fi2 FileInfo) bool
func Setenv(key, value string) error
func Symlink(oldname, newname string) error
func TempDir() string
func Truncate(name string, size int64) error
func Unsetenv(key string) error
func UserCacheDir() (string, error)
func UserConfigDir() (string, error)
func UserHomeDir() (string, error)
type File
    func Create(name string) (*File, error)
    func NewFile(fd uintptr, name string) *File
    func Open(name string) (*File, error)
    func OpenFile(name string, flag int, perm FileMode) (*File, error)
    func (f *File) Chdir() error
    func (f *File) Chmod(mode FileMode) error
    func (f *File) Chown(uid, gid int) error
    func (f *File) Close() error
    func (f *File) Fd() uintptr
    func (f *File) Name() string
    func (f *File) Read(b []byte) (n int, err error)
    func (f *File) ReadAt(b []byte, off int64) (n int, err error)
    func (f *File) Readdir(n int) ([]FileInfo, error)
    func (f *File) Readdirnames(n int) (names []string, err error)
    func (f *File) Seek(offset int64, whence int) (ret int64, err error)
    func (f *File) SetDeadline(t time.Time) error
    func (f *File) SetReadDeadline(t time.Time) error
    func (f *File) SetWriteDeadline(t time.Time) error
    func (f *File) Stat() (FileInfo, error)
    func (f *File) Sync() error
    func (f *File) SyscallConn() (syscall.RawConn, error)
    func (f *File) Truncate(size int64) error
    func (f *File) Write(b []byte) (n int, err error)
    func (f *File) WriteAt(b []byte, off int64) (n int, err error)
    func (f *File) WriteString(s string) (n int, err error)
type FileInfo
    func Lstat(name string) (FileInfo, error)
    func Stat(name string) (FileInfo, error)
type FileMode
    func (m FileMode) IsDir() bool
    func (m FileMode) IsRegular() bool
    func (m FileMode) Perm() FileMode
    func (m FileMode) String() string
type LinkError
    func (e *LinkError) Error() string
    func (e *LinkError) Unwrap() error
type PathError
    func (e *PathError) Error() string
    func (e *PathError) Timeout() bool
    func (e *PathError) Unwrap() error
type ProcAttr
type Process
    func FindProcess(pid int) (*Process, error)
    func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)
    func (p *Process) Kill() error
    func (p *Process) Release() error
    func (p *Process) Signal(sig Signal) error
    func (p *Process) Wait() (*ProcessState, error)
type ProcessState
    func (p *ProcessState) ExitCode() int
    func (p *ProcessState) Exited() bool
    func (p *ProcessState) Pid() int
    func (p *ProcessState) String() string
    func (p *ProcessState) Success() bool
    func (p *ProcessState) Sys() interface{}
    func (p *ProcessState) SysUsage() interface{}
    func (p *ProcessState) SystemTime() time.Duration
    func (p *ProcessState) UserTime() time.Duration
type Signal
type SyscallError
    func (e *SyscallError) Error() string
    func (e *SyscallError) Timeout() bool
    func (e *SyscallError) Unwrap() error

パッケージファイル

dir.go dir_darwin.go env.go env_default.go error.go error_posix.go exec.go exec_posix.go exec_unix.go executable.go executable_darwin.go file.go file_posix.go file_unix.go getwd.go getwd_darwin.go path.go path_unix.go pipe_bsd.go proc.go rawconn.go removeall_at.go stat.go stat_darwin.go stat_unix.go sticky_bsd.go str.go sys.go sys_bsd.go sys_unix.go types.go types_unix.go wait_unimp.go

定数

内部のシステムのものをラップする OpenFile へのフラグ。 すべてのフラグが特定のシステムに実装されているとは限りません。

const (
    // O_RDONLY, O_WRONLY ,または O_RDWR のいずれかを正確に指定する必要があります。
    O_RDONLY int = syscall.O_RDONLY // ファイルを読み取り専用で開きます。
    O_WRONLY int = syscall.O_WRONLY // ファイルを書き込み専用で開きます。
    O_RDWR   int = syscall.O_RDWR   // 読み書き可能なファイルを開きます。
    // 残りの値は振る舞いを制御するために入れたり入れたりすることができます。
    O_APPEND int = syscall.O_APPEND // 書き込み時にファイルにデータを追加します。
    O_CREATE int = syscall.O_CREAT  // 存在しない場合は新しいファイルを作成します。
    O_EXCL   int = syscall.O_EXCL   // O_CREATE とともに使用する場合,ファイルは存在してはいけません。
    O_SYNC   int = syscall.O_SYNC   // 同期入出力用にオープンします。
    O_TRUNC  int = syscall.O_TRUNC  // 開いたときに通常の書き込み可能なファイルを切り捨てます。
)

whence 値を探します。

非推奨:io.SeekStart , io.SeekCurrent ,および io.SeekEnd を使用してください。

const (
    SEEK_SET int = 0 // ファイルの出所を基準にしてシークする
    SEEK_CUR int = 1 // 現在のオフセットを基準にしてシークする
    SEEK_END int = 2 // 最後を基準にして探す
)
const (
    PathSeparator     = '/' // OS 固有のパス区切り文字
    PathListSeparator = ':' // OS 固有のパスリストセパレータ
)

DevNull はオペレーティングシステムの “null デバイス” の名前です。 Unix 系システムでは "/dev/null" です。 Windows では "NUL" です。

const DevNull = "/dev/null"

変数

いくつかの一般的なシステムコールエラーのポータブルアナログ。

このパッケージから返されるエラーは, errors.Is を含むこれらのエラーに対してテストできます。

var (
    // ErrInvalid は無効な引数を示します。受信側が nil の場合, File のメソッドはこのエラーを返します。
    ErrInvalid = errInvalid() // "invalid argument"

    ErrPermission = errPermission() // "permission denied"
    ErrExist      = errExist()      // "file already exists"
    ErrNotExist   = errNotExist()   // "file does not exist"
    ErrClosed     = errClosed()     // "file already closed"
    ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
)

Stdin, Stdout ,および Stderr は,標準入力,標準出力,および標準エラーのファイル記述子を指す開いたファイルです。

Go ランタイムはパニックやクラッシュに対して標準エラーに書き込みます。 Stderr を閉じると,これらのメッセージが他の場所,おそらく後で開かれたファイルに移動する可能性があります。

var (
    Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
    Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
    Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)

引数はプログラム名で始まるコマンドライン引数を保持します。

var Args []string

func Chdir

func Chdir(dir string) error

Chdir は現在の作業ディレクトリを名前付きディレクトリに変更します。 エラーがある場合は, *PathError 型になります。

func Chmod

func Chmod(name string, mode FileMode) error

Chmod は指定されたファイルのモードを mode に変更します。 ファイルがシンボリックリンクの場合,リンクのターゲットのモードを変更します。 エラーがある場合は, *PathError 型になります。

オペレーティングシステムに応じて,モードビットの異なるサブセットが使用されます。

Unix では,モードの許可ビット, ModeSetuid, ModeSetgid ,および ModeSticky が使用されます。

Windows では,モードの 0200 ビット (所有者が書き込み可能) のみが使用されます。ファイルの読み取り専用属性を設定するかクリアするかを制御します。他のビットは現在使用されていません。 Go 1.12 以前との互換性のために,非ゼロモードを使用します。読み取り専用ファイルにはモード 0400 を使用し,読み取り可能ファイルと書き込み可能ファイルには 0600 を使用します。

Plan 9 では,モードの許可ビット, ModeAppend, ModeExclusive ,および ModeTemporary が使用されます。

コード:

if err := os.Chmod("some-filename", 0644); err != nil {
    log.Fatal(err)
}

func Chown

func Chown(name string, uid, gid int) error

Chown は,名前付きファイルの数値の UID と GID を変更します。 ファイルがシンボリックリンクの場合は,リンクのターゲットの UID と GID を変更します。 -1 の uid または gid は,その値を変更しないことを意味します。 エラーがある場合は, *PathError 型になります。

Windows または Plan 9 では, Chown は常に *PathError でラップされた syscall.EWINDOWS または EPLAN9 エラーを返します。

func Chtimes

func Chtimes(name string, atime time.Time, mtime time.Time) error

Chtimes は,UNIX の utime() または utimes() 関数と同様に, 指定されたファイルのアクセスおよび変更時刻を変更します。

内部のファイルシステムは,値をそれほど正確でない時間単位に切り捨てたり丸めたりすることがあります。 エラーがある場合は, *PathError 型になります。

コード:

mtime := time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC)
atime := time.Date(2007, time.March, 2, 4, 5, 6, 0, time.UTC)
if err := os.Chtimes("some-filename", atime, mtime); err != nil {
    log.Fatal(err)
}

func Clearenv

func Clearenv()

Clearenv はすべての環境変数を削除します。

func Environ

func Environ() []string

Environ は,環境を表す文字列のコピーを "key=value" の形式で返します。

func Executable 1.8

func Executable() (string, error)

Executable は,現在のプロセスを開始した実行可能ファイルのパス名を返します。 パスがまだ正しい実行可能ファイルを指しているという保証はありません。 オペレーティングシステムによっては,シンボリックリンクを使用してプロセスを開始した場合,結果はシンボリックリンクまたはそれが指すパスになる可能性があります。 安定した結果が必要な場合は, path/filepath.EvalSymlinks が役に立ちます。

Executable は,エラーが発生しない限り絶対パスを返します。

主な使用例は,実行可能ファイルに対して配置されているリソースを見つけることです。

Executable nacl ではサポートされていません。

func Exit

func Exit(code int)

Exit は,現在のプログラムを与えられたステータスコードで終了します。 慣例として,コードゼロは成功を示し,ゼロ以外はエラーを示します。 プログラムはただちに終了します。 遅延関数は実行されません。

移植性のために,ステータスコードは [0, 125] の範囲内にある必要があります。

func Expand

func Expand(s string, mapping func(string) string) string

Expand は,マッピング関数に基づいて,文字列内の ${var} または $var を置き換えます。 たとえば, os.ExpandEnv(s) は os.Expand(s, os.Getenv) と同じです。

コード:

mapper := func(placeholderName string) string {
    switch placeholderName {
    case "DAY_PART":
        return "morning"
    case "NAME":
        return "Gopher"
    }

    return ""
}

fmt.Println(os.Expand("Good ${DAY_PART}, $NAME!", mapper))

出力:

Good morning, Gopher!

func ExpandEnv

func ExpandEnv(s string) string

ExpandEnv は,現在の環境変数の値に従って,文字列内の ${var} または $var を置き換えます。 未定義の変数への参照は,空の文字列に置き換えられます。

コード:

os.Setenv("NAME", "gopher")
os.Setenv("BURROW", "/usr/gopher")

fmt.Println(os.ExpandEnv("$NAME lives in ${BURROW}."))

出力:

gopher lives in /usr/gopher.

func Getegid

func Getegid() int

Getegid は,呼び出し元の数値実効グループ ID を返します。

Windows では, -1 を返します。

func Getenv

func Getenv(key string) string

Getenv は key の環境変数の値を取得します。 値を返します。 変数が存在しない場合は空になります。 空の値と未設定の値を区別するには, LookupEnv を使用します。

コード:

os.Setenv("NAME", "gopher")
os.Setenv("BURROW", "/usr/gopher")

fmt.Printf("%s lives in %s.\n", os.Getenv("NAME"), os.Getenv("BURROW"))

出力:

gopher lives in /usr/gopher.

func Geteuid

func Geteuid() int

Geteuid は,呼び出し元の数値の実効ユーザー ID を返します。

Windows では, -1 を返します。

func Getgid

func Getgid() int

Getgid は,呼び出し元の数値グループ ID を返します。

Windows では, -1 を返します。

func Getgroups

func Getgroups() ([]int, error)

Getgroups は,呼び出し側が属するグループの数値 ID のリストを返します。

Windows では, syscall.EWINDOWS を返します。 考えられる代替案については os/ ユーザパッケージを参照してください。

func Getpagesize

func Getpagesize() int

Get ページ size は,基盤となるシステムのメモリページサイズを返します。

func Getpid

func Getpid() int

Getpid は呼び出し元のプロセス ID を返します。

func Getppid

func Getppid() int

Getppid は,呼び出し元の親のプロセス ID を返します。

func Getuid

func Getuid() int

Getuid は,呼び出し元の数値のユーザー ID を返します。

Windows では, -1 を返します。

func Getwd

func Getwd() (dir string, err error)

Getwd は,現在のディレクトリに対応するルートパス名を返します。 現在のディレクトリに (シンボリックリンクのために) 複数のパスを介してアクセスできる場合, Getwd はそれらのうちのいずれかを返します。

func Hostname

func Hostname() (name string, err error)

Hostname はカーネルによって報告されたホスト名を返します。

func IsExist

func IsExist(err error) bool

IsExist は,エラーがファイルまたはディレクトリがすでに存在することを報告しているかどうかを示すブール値を返します。 それはいくつかのシステムコールエラーと同様に ErrExist によって満たされます。

func IsNotExist

func IsNotExist(err error) bool

IsNotExist は,ファイルまたはディレクトリが存在しないことをエラーが報告しているかどうかを示すブール値を返します。 それは ErrNotExist といくつかの syscall エラーによって満たされます。

コード:

filename := "a-nonexistent-file"
if _, err := os.Stat(filename); os.IsNotExist(err) {
    fmt.Println("file does not exist")
}
// 出力 : ファイルが存在しません

func IsPathSeparator

func IsPathSeparator(c uint8) bool

IsPathSeparator は, c がディレクトリ区切り文字かどうかを報告します。

func IsPermission

func IsPermission(err error) bool

IsPermission は,権限が拒否されたことをエラーが報告しているかどうかを示すブール値を返します。 ErrPermission といくつかの syscall エラーによって満たされます。

func IsTimeout 1.10

func IsTimeout(err error) bool

IsTimeout は,タイムアウトが発生したことをエラーが報告しているかどうかを示すブール値を返します。

func Lchown

func Lchown(name string, uid, gid int) error

Lchown は,指定されたファイルの数値の UID と GID を変更します。 ファイルがシンボリックリンクの場合は,リンク自体の uid と gid を変更します。 エラーがある場合は, *PathError 型になります。

Windows では,常に *PathError でラップされた syscall.EWINDOWS エラーを返します。

func Link(oldname, newname string) error

Link は oldname ファイルへのハードリンクとして newname を作成します。 エラーがある場合は, *LinkError 型になります。

func LookupEnv 1.5

func LookupEnv(key string) (string, bool)

LookupEnv は,key の環境変数の値を取得します。 変数が環境に存在する場合,値 (空の場合もあります) が返され,ブール値は true です。 それ以外の場合,戻り値は空になり,ブール値は false になります。

コード:

show := func(key string) {
    val, ok := os.LookupEnv(key)
    if !ok {
        fmt.Printf("%s not set\n", key)
    } else {
        fmt.Printf("%s=%s\n", key, val)
    }
}

os.Setenv("SOME_KEY", "value")
os.Setenv("EMPTY_KEY", "")

show("SOME_KEY")
show("EMPTY_KEY")
show("MISSING_KEY")

出力:

SOME_KEY=value
EMPTY_KEY=
MISSING_KEY not set

func Mkdir

func Mkdir(name string, perm FileMode) error

Mkdir は, (umask の前に) 指定された名前と許可ビットで新しいディレクトリを作成します。 エラーがある場合は, *PathError 型になります。

func MkdirAll

func MkdirAll(path string, perm FileMode) error

MkdirAll は必要な親と共にパスという名前のディレクトリを作成し, nil を返すか,そうでなければエラーを返します。 許可ビット perm(umask の前) は, MkdirAll が作成するすべてのディレクトリに使用されます。 パスがすでにディレクトリの場合, MkdirAll はなにもせずに nil を返します。

func NewSyscallError

func NewSyscallError(syscall string, err error) error

NewSyscallError は,エラーとして,指定されたシステムコール名とエラーの詳細を持つ新しい SyscallError を返します。 便宜上, err が nil の場合, NewSyscallError は nil を返します。

func Pipe

func Pipe() (r *File, w *File, err error)

Pipe は接続されたファイルのペアを返します。 r から読み込むと, w に書き込まれたバイトが返されます。 ファイルとエラーがあればそれを返します。

func Readlink(name string) (string, error)

Readlink は,指定されたシンボリックリンクのリンク先を返します。エラーがある場合,型は *PathError になります。

func Remove

func Remove(name string) error

Remove は,指定したファイルまたは (空の) ディレクトリを削除します。 エラーがある場合は, *PathError 型になります。

func RemoveAll

func RemoveAll(path string) error

RemoveAll はパスとそれに含まれるすべての子を削除します。 可能なものはすべて削除されますが,最初に発生したエラーが返されます。 パスが存在しない場合, RemoveAll は nil (エラーなし) を返します。 エラーがある場合は, *PathError 型になります。

func Rename

func Rename(oldpath, newpath string) error

Rename は,old パスを new パスに名前変更 (移動) します。 new パスがすでに存在し,それがディレクトリではない場合, Rename はそれを置き換えます。 old パスと new パスが異なるディレクトリにある場合は, OS 固有の制限が適用されることがあります。 エラーがある場合は, *LinkError 型になります。

func SameFile

func SameFile(fi1, fi2 FileInfo) bool

SameFile は, fi1 と fi2 が同じファイルを記述しているかどうかを報告します。 たとえば, Unix では,これは 2 つの基本構造の device フィールドと inode フィールドが同一であることを意味します。 他のシステムでは,決定はパス名に基づいているかもしれません。 SameFile は,このパッケージの Stat によって返された結果にのみ適用されます。 それ以外の場合は false を返します。

func Setenv

func Setenv(key, value string) error

Setenv は,key の環境変数の値を設定します。 もしあればエラーを返します。

func Symlink(oldname, newname string) error

Symlink は newname を oldname へのシンボリックリンクとして作成します。 エラーがある場合は, *LinkError 型になります。

func TempDir

func TempDir() string

TempDir は,一時ファイルに使用するデフォルトのディレクトリを返します。

Unix システムでは,空でなければ $TMPDIR を返し,そうでなければ /tmp を返します。 Windows では, GetTempPath を使用して,%TMP%, %TEMP%, %USERPROFILE%,または Windows ディレクトリから最初の空でない値を返します。 Plan 9 では, /tmp を返します。

ディレクトリが存在することも,アクセス可能な権限があることも保証されていません。

func Truncate

func Truncate(name string, size int64) error

Truncate は,指定されたファイルのサイズを変更します。 ファイルがシンボリックリンクの場合は,リンクのターゲットのサイズを変更します。 エラーがある場合は, *PathError 型になります。

func Unsetenv 1.4

func Unsetenv(key string) error

Unsetenv は 1 つの環境変数を設定解除します。

コード:

os.Setenv("TMPDIR", "/my/tmp")
defer os.Unsetenv("TMPDIR")

func UserCacheDir 1.11

func UserCacheDir() (string, error)

UserCacheDir は,ユーザー固有のキャッシュデータに使用するデフォルトのルートディレクトリを返します。 ユーザーはこのディレクトリ内に独自のアプリケーション固有のサブディレクトリを作成して使用する必要があります。

Unix システムでは, https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html が空でなければ $XDG_CACHE_HOME を返し,そうでなければ $HOME/.cache を返します。 Darwin では, $HOME/Library/Caches を返します。 Windows では,%LocalAppData%を返します。 Plan 9 では, $home/lib/cache を返します。

場所を特定できない場合 (たとえば, $HOME が定義されていない場合) ,エラーが返されます。

func UserConfigDir 1.13

func UserConfigDir() (string, error)

UserConfigDir は,ユーザー固有の構成データに使用するデフォルトのルートディレクトリを返します。ユーザーは,このサブディレクトリ内に独自のアプリケーション固有のサブディレクトリを作成し,それを使用する必要があります。

Unix システムでは, https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html で指定されているように空でない場合は $XDG_CONFIG_HOME を返し,そうでない場合は $HOME/.config を返します。 Darwin では, $HOME/Library/Application Support を返します。 Windows では, %AppData% を返します。 Plan 9 では, $home/lib を返します。

場所を特定できない場合 (たとえば, $HOME が定義されていない場合) ,エラーが返されます。

func UserHomeDir 1.12

func UserHomeDir() (string, error)

UserHomeDir は,現在のユーザーのホームディレクトリを返します。

macOS を含む Unix では, $HOME 環境変数を返します。 Windows では,%USERPROFILE%を返します。 Plan 9 では, $home 環境変数を返します。

type File

File は開いているファイル記述子を表します。

type File struct {
    // エクスポートされていないフィールドがあります
}

func Create

func Create(name string) (*File, error)

Create は,指定されたファイルを作成または切り捨てます。ファイルが既に存在する場合,切り捨てられます。ファイルが存在しない場合,モード 0666(umask の前) で作成されます。成功した場合,返された File のメソッドを I/O に使用できます。関連するファイル記述子のモードは O_RDWR です。エラーがある場合,型は *PathError になります。

func NewFile

func NewFile(fd uintptr, name string) *File

NewFile は与えられたファイルディスクリプタと名前で新しい File を返します。 fd が有効なファイル記述子ではない場合,戻り値は nil になります。 Unix システムでは,ファイルディスクリプタがノンブロッキングモードの場合, NewFile はポーリング可能な File(SetDeadline メソッドが機能するファイル) を返そうとします。

func Open

func Open(name string) (*File, error)

Open は指定されたファイルを読み込み用に開きます。 成功した場合,返されたファイルのメソッドは読み込みに使用できます。 関連するファイル記述子はモード O_RDONLY を持ちます。 エラーがある場合は, *PathError 型になります。

func OpenFile

func OpenFile(name string, flag int, perm FileMode) (*File, error)

OpenFile は一般化されたオープンコールです。ほとんどのユーザーは,代わりに Open または Create を使用します。指定されたフラグ (O_RDONLY など) で指定されたファイルを開きます。ファイルが存在せず, O_CREATE フラグが渡される場合,モード perm(umask の前) で作成されます。成功した場合,返された File のメソッドを I/O に使用できます。エラーがある場合,型は *PathError になります。

コード:

f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
    log.Fatal(err)
}
if err := f.Close(); err != nil {
    log.Fatal(err)
}

例 (Append)

コード:

// ファイルが存在しない場合は,ファイルを作成するか,ファイルに追加します。
f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
    log.Fatal(err)
}
if _, err := f.Write([]byte("appended some data\n")); err != nil {
    f.Close() // エラーを無視します。書き込みエラーが優先されます
    log.Fatal(err)
}
if err := f.Close(); err != nil {
    log.Fatal(err)
}

func (*File) Chdir

func (f *File) Chdir() error

Chdir は現在の作業ディレクトリをファイルに変更します。 このファイルはディレクトリである必要があります。 エラーがある場合は, *PathError 型になります。

func (*File) Chmod

func (f *File) Chmod(mode FileMode) error

Chmod はファイルのモードを mode に変更します。 エラーがある場合は, *PathError 型になります。

func (*File) Chown

func (f *File) Chown(uid, gid int) error

Chown は,名前付きファイルの数値の UID と GID を変更します。 エラーがある場合は, *PathError 型になります。

Windows では,常に *PathError でラップされた syscall.EWINDOWS エラーを返します。

func (*File) Close

func (f *File) Close() error

Close は,ファイルを閉じ,ファイルは I/O に使用できなくなります。 SetDeadline をサポートしているファイルでは,保留中の I/O 操作はキャンセルされ,すぐにエラーを返します。 Close will return an error if it has already been called.

func (*File) Fd

func (f *File) Fd() uintptr

Fd は,開いているファイルを参照する整数の Unix ファイル記述子を返します。 ファイル記述子は, f.Close が呼び出されるか, f がガベージコレクションされるまでの間だけ有効です。 Unix システムでは,これにより SetDeadline メソッドが機能しなくなります。

func (*File) Name

func (f *File) Name() string

Name は Open に提示されたファイルの名前を返します。

func (*File) Read

func (f *File) Read(b []byte) (n int, err error)

Read は File から len(b) バイトまで読み込みます。 読み込まれたバイト数と発生したエラーを返します。 ファイルの終わりで, Read は 0, io.EOF を返します。

func (*File) ReadAt

func (f *File) ReadAt(b []byte, off int64) (n int, err error)

ReadAt は,ファイルからバイトオフセット off から len(b) バイトを読み込みます。 読み込まれたバイト数と,もしあればエラーを返します。 n < len(b) の場合, ReadAt は常に nil 以外のエラーを返します。 ファイルの終わりで,そのエラーは io.EOF です。

func (*File) Readdir

func (f *File) Readdir(n int) ([]FileInfo, error)

Readdir は,ファイルに関連付けられたディレクトリの内容を読み取り, Lstat によって返されるように,最大​​ n 個の FileInfo 値のスライスをディレクトリ順に返します。 同じファイルに対する後続の呼び出しは,さらに FileInfos を生成します。

n > 0 の場合, Readdir は最大 n 個の FileInfo 構造体を返します。 この場合, Readdir が空のスライスを返すと,その理由を説明する nil 以外のエラーが返されます。 ディレクトリの終わりでは,エラーは io.EOF です。

n <= 0 の場合, Readdir は単一スライス内のディレクトリからすべての FileInfo を返します。 この場合, Readdir が成功すると (ディレクトリの最後まで読み取ります) ,スライスと nil エラーが返されます。 ディレクトリが終了する前にエラーが発生した場合, Readdir はその時点までに FileInfo を読み取り,それ以外のエラーを返します。

func (*File) Readdirnames

func (f *File) Readdirnames(n int) (names []string, err error)

Readdirnames は,ファイルに関連付けられているディレクトリの内容を読み取り,ディレクトリ内のファイルの最大 n 個の名前のスライスをディレクトリ順に返します。同じファイルに対する後続の呼び出しは,さらに名前を生成します。

n > 0 の場合, Readdirnames は最大 n 個の名前を返します。 この場合, Readdirnames が空のスライスを返すと,その理由を説明する nil 以外のエラーが返されます。 ディレクトリの終わりでは,エラーは io.EOF です。

n <= 0 の場合, Readdirnames はディレクトリからすべての名前を 1 つのスライスに返します。 この場合, Readdirnames が成功すると (ディレクトリの最後まで読み取ります) ,スライスと nil エラーが返されます。 ディレクトリの終わりまでにエラーが発生した場合, Readdirnames はそれまでに読み込まれた名前と nil 以外のエラーを返します。

func (*File) Seek

func (f *File) Seek(offset int64, whence int) (ret int64, err error)

Seek は,ファイルの次の Read または Write のオフセットを offset に設定します。 0 はファイルの原点を基準にした相対位置, 1 は現在のオフセットを基準とした相対位置, 2 は末尾からの相対位置を意味します。 もしあれば,新しいオフセットとエラーを返します。 O_APPEND で開かれたファイルに対する Seek の動作は指定されていません。

func (*File) SetDeadline 1.10

func (f *File) SetDeadline(t time.Time) error

SetDeadline は,ファイルの読み書き期限を設定します。 これは, SetReadDeadline と SetWriteDeadline の両方を呼び出すのと同じです。

いくつかの種類のファイルだけが期限の設定をサポートします。 期限をサポートしていないファイルに対して SetDeadline を呼び出すと, ErrNoDeadline が返されます。 ほとんどのシステムでは通常のファイルは期限をサポートしませんが,パイプはサポートします。

期限は,入出力操作がブロックされずにエラーで失敗するまでの絶対時間です。 締め切りは,直後の Read または Write の呼び出しだけでなく,将来および保留中のすべての I/O に適用されます。 期限を過ぎた後は,将来期限を設定して接続を更新できます。

タイムアウトが失敗した後に返されたエラーは Timeout メソッドを実装し, Timeout メソッドを呼び出すと true を返します。 PathError 型と SyscallError 型は, Timeout メソッドを実装します。 一般に,エラーがタイムアウトを示しているかどうかをテストするには, IsTimeout を呼び出します。

読み取りまたは書き込み呼び出しが成功した後に,期限を繰り返し延長することによって,アイドルタイムアウトを実装できます。

t のゼロ値は,入出力操作がタイムアウトにならないことを意味します。

func (*File) SetReadDeadline 1.10

func (f *File) SetReadDeadline(t time.Time) error

SetReadDeadline は,将来の Read 呼び出しと現在ブロックされている Read 呼び出しの期限を設定します。 t がゼロの場合, Read はタイムアウトしません。 すべてのファイルが設定期限をサポートしているわけではありません。 SetDeadline を参照してください。

func (*File) SetWriteDeadline 1.10

func (f *File) SetWriteDeadline(t time.Time) error

SetWriteDeadline は,将来の書き込み呼び出しおよび現在ブロックされている書き込み呼び出しの期限を設定します。 Write がタイムアウトしても, n > 0 が返され,一部のデータが正常に書き込まれたことが示されます。 t がゼロの場合,書き込みはタイムアウトしません。 すべてのファイルが設定期限をサポートしているわけではありません。 SetDeadline を参照してください。

func (*File) Stat

func (f *File) Stat() (FileInfo, error)

Stat は FileInfo 構造体記述ファイルを返します。 エラーがある場合は, *PathError 型になります。

func (*File) Sync

func (f *File) Sync() error

Sync は,ファイルの現在の内容を安定記憶装置にコミットします。 通常,これは最近書き込まれたデータのファイルシステムのメモリ内コピーをディスクにフラッシュすることを意味します。

func (*File) SyscallConn 1.12

func (f *File) SyscallConn() (syscall.RawConn, error)

SyscallConn は未加工のファイルを返します。 これは syscall.Conn インターフェースを実装します。

func (*File) Truncate

func (f *File) Truncate(size int64) error

Truncate はファイルのサイズを変更します。 I/O オフセットは変わりません。 エラーがある場合は, *PathError 型になります。

func (*File) Write

func (f *File) Write(b []byte) (n int, err error)

Write は,ファイルに len(b) バイトを書き込みます。 書き込まれたバイト数と,もしあればエラーを返します。 n != len(b) の場合, Write は nil 以外のエラーを返します。

func (*File) WriteAt

func (f *File) WriteAt(b []byte, off int64) (n int, err error)

WriteAt は,バイトオフセット off から始めて, len(b) バイトを File に書き込みます。 書き込まれたバイト数と,もしあればエラーを返します。 n != len(b) の場合, WriteAt は nil 以外のエラーを返します。

ファイルが O_APPEND フラグで開かれた場合, WriteAt はエラーを返します。

func (*File) WriteString

func (f *File) WriteString(s string) (n int, err error)

WriteString は Write に似ていますが,バイトスライスではなく文字列 s の内容を書き込みます。

type FileInfo

FileInfo はファイルを記述し, Stat と Lstat によって返されます。

type FileInfo interface {
    Name() string       // ファイルのベース名
    Size() int64        // 通常のファイルの場合はバイト単位の長さ。 他のシステムに依存
    Mode() FileMode     // ファイルモードビット
    ModTime() time.Time // 修正時期
    IsDir() bool        // Mode() の略称です。
    Sys() interface{}   // 内部のデータソース (nil を返す可能性があります)
}

func Lstat

func Lstat(name string) (FileInfo, error)

Lstat は,指定されたファイルを記述する FileInfo を返します。 ファイルがシンボリックリンクの場合,返される FileInfo はシンボリックリンクを記述します。 Lstat はリンクをたどることを試みません。 エラーがある場合は, *PathError 型になります。

func Stat

func Stat(name string) (FileInfo, error)

Stat は指定されたファイルを記述する FileInfo を返します。 エラーがある場合は, *PathError 型になります。

type FileMode

FileMode はファイルのモードと許可ビットを表します。 これらのビットはすべてのシステムで同じ定義を持っているので,ファイルに関する情報はあるシステムから別のシステムへ移植可能に移動できます。 すべてのビットがすべてのシステムに適用されるわけではありません。 唯一必要なビットはディレクトリの ModeDir です。

type FileMode uint32

定義されたファイルモードビットは FileMode の最上位ビットです。 最下位 9 ビットは,標準の UNIX rwxrwxrwx アクセス許可です。 これらのビットの値は,パブリック API の一部と見なされ,ワイヤプロトコルやディスク表現で使用される可能性があります。 新しいビットが追加される可能性はありますが,変更しないでください。

const (
    // 一文字は, String メソッドのフォーマットで使用される略語です。
    ModeDir        FileMode = 1 << (32 - 1 - iota) // d: はディレクトリです
    ModeAppend                                     // a: 追加専用
    ModeExclusive                                  // l: 専用
    ModeTemporary                                  // T: 一時ファイル; Plan 9 のみ
    ModeSymlink                                    // L: シンボリックリンク
    ModeDevice                                     // D: デバイスファイル
    ModeNamedPipe                                  // p: 名前付きパイプ (FIFO)
    ModeSocket                                     // S: Unix ドメインソケット
    ModeSetuid                                     // u: setuid
    ModeSetgid                                     // g: setgid
    ModeCharDevice                                 // c: ModeDevice が設定されている場合の Unix キャラクタデバイス
    ModeSticky                                     // t: スティッキー
    ModeIrregular                                  // ?: 非正規ファイル; このファイルについて他に何も知られていません

    // 型ビットをマスクします。 通常のファイルの場合は,何も設定されません。
    ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice | ModeCharDevice | ModeIrregular

    ModePerm FileMode = 0777 // Unix パーミッションビット
)

コード:

fi, err := os.Lstat("some-filename")
if err != nil {
    log.Fatal(err)
}

fmt.Printf("permissions: %#o\n", fi.Mode().Perm()) // 0400, 0777 など
switch mode := fi.Mode(); {
case mode.IsRegular():
    fmt.Println("regular file")
case mode.IsDir():
    fmt.Println("directory")
case mode&os.ModeSymlink != 0:
    fmt.Println("symbolic link")
case mode&os.ModeNamedPipe != 0:
    fmt.Println("named pipe")
}

func (FileMode) IsDir

func (m FileMode) IsDir() bool

IsDir は, m がディレクトリを記述しているかどうかを報告します。 つまり, ModeDir ビットが m に設定されているかどうかをテストします。

func (FileMode) IsRegular 1.1

func (m FileMode) IsRegular() bool

IsRegular は, m が通常のファイルを記述しているかどうかを報告します。 つまり,モード型ビットが設定されていないことをテストします。

func (FileMode) Perm

func (m FileMode) Perm() FileMode

Perm は UNIX の許可ビットを m に返します。

func (FileMode) String

func (m FileMode) String() string

type LinkError

LinkError は,リンク,シンボリックリンク,または名前変更システムコール中のエラーとそれを引き起こしたパスを記録します。

type LinkError struct {
    Op  string
    Old string
    New string
    Err error
}

func (*LinkError) Error

func (e *LinkError) Error() string

func (*LinkError) Unwrap 1.13

func (e *LinkError) Unwrap() error

type PathError

PathError は,エラーとそれを引き起こした操作およびファイルパスを記録します。

type PathError struct {
    Op   string
    Path string
    Err  error
}

func (*PathError) Error

func (e *PathError) Error() string

func (*PathError) Timeout 1.10

func (e *PathError) Timeout() bool

Timeout は,このエラーがタイムアウトを表しているかどうかを報告します。

func (*PathError) Unwrap 1.13

func (e *PathError) Unwrap() error

type ProcAttr

ProcAttr は, StartProcess によって開始された新しいプロセスに適用される属性を保持しています。

type ProcAttr struct {
    // Dir が空でない場合,子はプロセスを作成する前にディレクトリに変更されます。
    Dir string
    // Env が nil 以外であると, Environ が返す形式で新しいプロセスの環境変数を与えます。
    // それが nil であれば, Environ の結果が使われます。
    Env []string
    // File は,新しいプロセスによって継承されたオープンファイルを指定します。
    // 最初の 3 つのエントリは,標準入力,標準出力,および標準エラーに対応しています。
    // 内部のオペレーティングシステムに応じて,実装は追加のエントリをサポートする場合があります。
    // nil エントリは,プロセスの開始時にファイルが閉じられていることに対応しています。
    Files []*File

    // オペレーティングシステム固有のプロセス作成属性。
    // このフィールドを設定すると,プログラムが正しく実行されなかったり,オペレーティングシステムによってはコンパイルできなくなったりする可能性があることに注意してください。
    Sys *syscall.SysProcAttr
}

type Process

Process は StartProcess によって作成されたプロセスに関する情報を格納します。

type Process struct {
    Pid int
    // エクスポートされていないフィールドがあります
}

func FindProcess

func FindProcess(pid int) (*Process, error)

FindProcess は,その pid によって実行中のプロセスを探します。

返される Process を使用して,基盤となるオペレーティングシステムのプロセスに関する情報を取得できます。

Unix システムでは, FindProcess は常に成功し,プロセスが存在するかどうかにかかわらず,指定された pid に対してプロセスを返します。

func StartProcess

func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)

StartProcess は, name, argv ,および attr で指定されたプログラム,引数,および属性を使用して新しいプロセスを開始します。 argv スライスは新しいプロセスで os.Args になるので,通常はプログラム名で始まります。

呼び出し側のゴルーチンが runtime.LockOSThread でオペレーティングシステムのスレッドをロックし,継承可能な OS レベルのスレッド状態 (Linux または Plan 9 の名前空間など) を変更した場合,新しいプロセスは呼び出し側のスレッド状態を継承します。

StartProcess は低レベルのインターフェースです。 os/exec パッケージはより高レベルのインターフェースを提供します。

エラーがある場合は, *PathError 型になります。

func (*Process) Kill

func (p *Process) Kill() error

Kill は,プロセスをただちに終了します。 プロセスが実際に終了するまで, Kill は待機しません。 これはプロセス自体を殺すだけで,他のプロセスが開始した可能性はありません。

func (*Process) Release

func (p *Process) Release() error

Release は, Process p に関連するすべてのリソースを解放し,将来使用できなくします。 Wait がそうでない場合にのみリリースを呼び出す必要があります。

func (*Process) Signal

func (p *Process) Signal(sig Signal) error

Signal はプロセスにシグナルを送ります。 Windows での割り込み送信は実装されていません。

func (*Process) Wait

func (p *Process) Wait() (*ProcessState, error)

Wait はプロセスが終了するのを待ってから,ステータスとエラーがあればそれを記述する ProcessState を返します。 待機すると,プロセスに関連するすべてのリソースが解放されます。 ほとんどのオペレーティングシステムでは,プロセスは現在のプロセスの子である必要があり,そうでない場合はエラーが返されます。

type ProcessState

ProcessState は, Wait による報告に従って,プロセスに関する情報を格納します。

type ProcessState struct {
    // エクスポートされていないフィールドがあります
}

func (*ProcessState) ExitCode 1.12

func (p *ProcessState) ExitCode() int

ExitCode は終了したプロセスの終了コードを返します。 プロセスが終了していないかシグナルによって終了した場合は -1 を返します。

func (*ProcessState) Exited

func (p *ProcessState) Exited() bool

Exited はプログラムが終了したかどうかを報告します。

func (*ProcessState) Pid

func (p *ProcessState) Pid() int

Pid は終了したプロセスのプロセス ID を返します。

func (*ProcessState) String

func (p *ProcessState) String() string

func (*ProcessState) Success

func (p *ProcessState) Success() bool

Success は,UNIX の終了ステータス 0 など,プログラムが正常に終了したかどうかを報告します。

func (*ProcessState) Sys

func (p *ProcessState) Sys() interface{}

Sys はプロセスに関するシステム依存の終了情報を返します。 その内容にアクセスするには, UNIX の syscall.WaitStatus など,適切な基底型に変換してください。

func (*ProcessState) SysUsage

func (p *ProcessState) SysUsage() interface{}

SysUsage は,終了したプロセスに関するシステム依存のリソース使用情報を返します。 その内容にアクセスするには, UNIX の *syscall.Rusage など,適切な基底型に変換してください。 (Unix では, *syscall.Rusage は getrusage(2) マニュアルページで定義されている struct rusage と一致します。)

func (*ProcessState) SystemTime

func (p *ProcessState) SystemTime() time.Duration

SystemTime は,終了したプロセスとその子プロセスのシステム CPU 時間を返します。

func (*ProcessState) UserTime

func (p *ProcessState) UserTime() time.Duration

UserTime は,終了したプロセスとその子プロセスのユーザー CPU 時間を返します。

type Signal

Signal はオペレーティングシステムのシグナルを表します。 通常の基本的な実装はオペレーティングシステムに依存しています。 Unix では syscall.Signal です。

type Signal interface {
    String() string
    Signal() // 他のストリンガーと区別するため
}

すべてのシステムで os パッケージに存在することが保証されている唯一のシグナル値は os.Interrupt (プロセスに割り込みを送る) と os.Kill (プロセスを強制的に終了させる) です。 Windows では, os.Process.Signal を使用して os.Interrupt をプロセスに送信することは実装されていません。 シグナルを送信する代わりにエラーを返します。

var (
    Interrupt Signal = syscall.SIGINT
    Kill      Signal = syscall.SIGKILL
)

type SyscallError

SyscallError は特定のシステムコールからのエラーを記録します。

type SyscallError struct {
    Syscall string
    Err     error
}

func (*SyscallError) Error

func (e *SyscallError) Error() string

func (*SyscallError) Timeout 1.10

func (e *SyscallError) Timeout() bool

Timeout は,このエラーがタイムアウトを表しているかどうかを報告します。

func (*SyscallError) Unwrap 1.13

func (e *SyscallError) Unwrap() error

サブディレクトリ

名前 概要
..
exec exec パッケージは,外部コマンドを実行します。
signal signal パッケージは,入力シグナルへのアクセスを実装します。
user user パッケージは,名前や id でユーザアカウントを検索できるようにします。