Go语言的os包提供了与操作系统交互的功能。以下是os包的主要用法总结:
- 文件操作
Open(name string) (*File, error): 打开文件只读。OpenFile(name string, flag int, perm FileMode):按照模式打开文件Create(name string) (*File, error): 创建新文件或截断现有文件。Remove(name string) error: 删除文件或空目录。Rename(oldpath, newpath string) error: 重命名文件或目录。Stat(name string) (FileInfo, error): 获取文件信息。
OpenFile()对应的flag有:
// 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.
OpenFile()中的参数 perm FileMode:对应的文件的权限设置。常用的是0644
权限模式的详细解释
权限模式0644由四个数字组成:
- 前导的0表示这是一个八进制数。
- 第一个数字6表示所有者的权限。
- 第二个数字4表示组的权限。
- 第三个数字4表示其他用户的权限。
每个数字代表以下权限:
- 4(读权限 r):对应二进制的100。
- 2(写权限 w):对应二进制的010。
- 1(执行权限 x):对应二进制的001。
通过将这些权限组合,我们可以得到一个八进制数:
- 6 = 4(读) + 2(写) = 110(二进制)。
- 4 = 4(读) = 100(二进制)。
权限模式0644的具体含义
- 所有者权限:6 = 4(读) + 2(写) = rw-(读写)。
- 组权限:4 = 4(读) = r--(只读)。
- 其他用户权限:4 = 4(读) = r--(只读)。
因此,权限模式0644表示:
- 所有者可以读取和写入该文件,但不能执行。
- 组成员可以读取该文件,但不能写入或执行。
- 其他用户可以读取该文件,但不能写入或执行。
补充Stat()返回的一个FileInfo接口:
type FileInfo interface {
Name() string // base name of the file
Size() int64 // length in bytes for regular files; system-dependent for others
Mode() FileMode // file mode bits
ModTime() time.Time // modification time
IsDir() bool // abbreviation for Mode().IsDir()
Sys() any // underlying data source (can return nil)
}
-
目录操作
Mkdir(name string, perm FileMode) error: 创建目录。MkdirAll(path string, perm FileMode) error: 递归创建目录。RemoveAll(path string) error: 递归删除路径及其内容。
-
文件读写
(*File).Read(b []byte) (n int, err error): 读取文件。(*File).Write(b []byte) (n int, err error): 写入文件。(*File).Close() error: 关闭文件。(*File).Seek(offset int64, whence int) (ret int64, err error): 设置文件读取位置。
-
环境变量
Getenv(key string) string: 获取环境变量。Setenv(key, value string) error: 设置环境变量。Unsetenv(key string) error: 删除环境变量。Environ() []string: 获取所有环境变量。
-
进程操作
Exit(code int): 退出当前进程。StartProcess(name string, argv []string, attr *ProcAttr) (*Process, error): 启动新进程。FindProcess(pid int) (*Process, error): 查找进程。
-
错误处理
- 常见错误变量:
ErrNotExist,ErrExist,ErrPermission。
- 常见错误变量:
-
标准流
Stdin,Stdout,Stderr: 标准输入、输出、错误流。使用例如:os.Stdin
os包通过这些函数和方法提供了文件系统操作、环境变量管理和进程控制等基本操作功能。