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包通过这些函数和方法提供了文件系统操作、环境变量管理和进程控制等基本操作功能。