wx

关注公众号

os


Golang 标准库 - os

os 包提供了平台无关的操作系统功能接口。错误处理采用 Go 风格:如果操作失败,返回的错误值描述问题;如果操作成功,错误值为 nil。

主要功能说明:

  1. 文件操作

    • Create()/Open()/OpenFile() 打开文件
    • Read()/Write() 读写文件
    • Close() 关闭文件
    • Remove() 删除文件
  2. 目录操作

    • Mkdir()/MkdirAll() 创建目录
    • Remove()/RemoveAll() 删除目录
    • Getwd() 获取当前目录
    • Chdir() 切换目录
  3. 环境变量

    • Getenv() 获取环境变量
    • Setenv() 设置环境变量
    • LookupEnv() 查找环境变量
    • Environ() 获取所有环境变量
  4. 进程信息

    • Getpid() 获取进程ID
    • Getppid() 获取父进程ID
    • Getuid()/Getgid() 获取用户/组ID
    • Hostname() 获取主机名

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
}
如有疑问关注公众号给我留言
wx

关注公众号

©2017-2023 鲁ICP备17023316号-1 Powered by Hugo