os
Golang 标准库 - os
os 包提供了平台无关的操作系统功能接口。错误处理采用 Go 风格:如果操作失败,返回的错误值描述问题;如果操作成功,错误值为 nil。
主要功能说明:
-
文件操作:
Create()/Open()/OpenFile()打开文件Read()/Write()读写文件Close()关闭文件Remove()删除文件
-
目录操作:
Mkdir()/MkdirAll()创建目录Remove()/RemoveAll()删除目录Getwd()获取当前目录Chdir()切换目录
-
环境变量:
Getenv()获取环境变量Setenv()设置环境变量LookupEnv()查找环境变量Environ()获取所有环境变量
-
进程信息:
Getpid()获取进程IDGetppid()获取父进程IDGetuid()/Getgid()获取用户/组IDHostname()获取主机名
func main() {
// 1. 文件操作
fmt.Println("=== 文件操作 ===")
// 创建并写入文件
file, err := os.Create("test.txt")
if err != nil {
log.Fatal(err)
}
file.WriteString("Hello, Go!")
file.Close()
// 读取文件
content, err := os.ReadFile("test.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println("文件内容:", string(content))
// 删除文件
os.Remove("test.txt")
// 2. 目录操作
fmt.Println("\n=== 目录操作 ===")
// 创建目录
err = os.Mkdir("testdir", 0755)
if err != nil && !os.IsExist(err) {
log.Fatal(err)
}
// 获取当前目录
wd, _ := os.Getwd()
fmt.Println("当前目录:", wd)
// 读取目录内容
entries, _ := os.ReadDir(".")
for _, entry := range entries[:min(5, len(entries))] {
fmt.Println(" ", entry.Name(), entry.IsDir())
}
// 删除目录
os.Remove("testdir")
// 3. 环境变量
fmt.Println("\n=== 环境变量 ===")
// 获取环境变量
path := os.Getenv("PATH")
fmt.Println("PATH 长度:", len(path))
// 设置环境变量
os.Setenv("MY_VAR", "hello")
fmt.Println("MY_VAR:", os.Getenv("MY_VAR"))
// 4. 进程信息
fmt.Println("\n=== 进程信息 ===")
fmt.Println("进程ID:", os.Getpid())
fmt.Println("父进程ID:", os.Getppid())
hostname, _ := os.Hostname()
fmt.Println("主机名:", hostname)
}
func min(a, b int) int {
if a < b {
return a
}
return b
}