1. 介绍
文档地址:https://pkg.go.dev/os
Go 标准库 os 提供了一些独立于平台的操作系统函数。
打开文件并读取内容:
file, err := os.Open("file.go")
data := make([]byte, 100)
count, err := file.Read(data)
2. 常量
文件打开的权限选项:
const (
// Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
O_RDONLY int = syscall.O_RDONLY // open the file read-only.
O_WRONLY int = syscall.O_WRONLY // open the file write-only.
O_RDWR int = syscall.O_RDWR // open the file read-write.
// The remaining values may be or'ed in to control behavior.
O_APPEND int = syscall.O_APPEND // append data to the file when writing.
O_CREATE int = syscall.O_CREAT // create a new file if none exists.
O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist.
O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
O_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened.
)
文件打开指针:
const (
SEEK_SET int = 0 // seek relative to the origin of the file
SEEK_CUR int = 1 // seek relative to the current offset
SEEK_END int = 2 // seek relative to the end
)
空文件,用于将不需要的内容输出:
const DevNull = "/dev/null"
3. 变量
文件相关异常:
var (
// ErrInvalid indicates an invalid argument.
// Methods on File will return this error when the receiver is nil.
ErrInvalid = fs.ErrInvalid // "invalid argument"
ErrPermission = fs.ErrPermission // "permission denied"
ErrExist = fs.ErrExist // "file already exists"
ErrNotExist = fs.ErrNotExist // "file does not exist"
ErrClosed = fs.ErrClosed // "file already closed"
ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
ErrDeadlineExceeded = errDeadlineExceeded() // "i/o timeout"
)
标准输入输出:
var (
Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)
4. 类型
4.1 File
File 表示打开文件的文件描述符。
类型定义:
type File struct {
// contains filtered or unexported fields
}
方法:
// Fd 返回文件描述符
func (f *File) Fd() uintptr
// Name 文件名
func (f *File) Name() string
// Stat 文件状态
func (f *File) Stat() (FileInfo, error)
// Read 读文件
func (f *File) Read(b []byte) (n int, err error)
// Write 写文件
func (f *File) Write(b []byte) (n int, err error)
// Close 关闭文件
func (f *File) Close() error
4.2 Process
Process 表示通过 StartProcess 创建的一个进程的信息。
类型定义:
type Process struct {
Pid int
// contains filtered or unexported fields
}
方法:
// FindProcess 通过pid查找进程
func FindProcess(pid int) (*Process, error)
// StartProcess 启动进程
func StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error)
// Kill 终止进程
func (p *Process) Kill() error
// Signal 向进程发送信号
func (p *Process) Signal(sig Signal) error
4.3 Signal
Signal 表示操作系统对进程发送的信号。
类型定义:
type Signal interface {
String() string
Signal() // to distinguish from other Stringers
}
5. 函数
// Chdir 切换目录
func Chdir(dir string) error
// Getwd 获取绝对路径
func Getwd() (dir string, err error)
// Link 创建硬链接
func Link(oldname, newname string) error
// Symlink 创建软链接
func Symlink(oldname, newname string) error
// Mkdir 创建目录
func Mkdir(name string, perm FileMode) error
// MkdirAll 创建目录,多级目录不存在时直接创建
func MkdirAll(path string, perm FileMode) error
// Create 创建文件
func Create(name string) (*File, error)
// Open 打开文件
func Open(name string) (*File, error)
// Rename 重命名
func Rename(oldpath, newpath string) error
// Remove 删除文件或空目录
func Remove(name string) error
// RemoveAll 删除目录
func RemoveAll(path string) error
// ReadFile 读文件返回内容
func ReadFile(name string) ([]byte, error)
// WriteFile 写入文件
func WriteFile(name string, data []byte, perm FileMode) error
// Chmod 修改文件权限
func Chmod(name string, mode FileMode) error
// Chown 修改文件用户
func Chown(name string, uid, gid int) error
// Environ 返回所有环境变量,形式为 key=value
func Environ() []string
// Getenv 获取环境变量
func Getenv(key string) string
// LookupEnv 获取环境变量
func LookupEnv(key string) (string, bool)
// Setenv 设置环境变量
func Setenv(key, value string) error
// Getpid 获取进程id
func Getpid() int
// Getppid 获取父进程id
func Getppid() int
// Getuid 获取用户id
func Getuid() int
// Getgid 获取组id
func Getgid() int
// Exit 退出当前进程并返回返回码
func Exit(code int)