当前位置: 首页 > news >正文

Go语言os标准库

Go语言的os标准库提供了丰富的功能来与操作系统交互,涵盖文件操作、目录管理、环境变量、进程控制等。以下是一些常用函数及示例:


一、文件操作

1. 打开/关闭文件
  • os.Open():打开文件(只读)。
  • os.Create():创建文件(若存在则清空)。
// 打开文件
file, err := os.Open("test.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

// 创建文件
newFile, err := os.Create("newfile.txt")
if err != nil {
    log.Fatal(err)
}
defer newFile.Close()
2. 读写文件
  • os.ReadFile():读取整个文件。
  • os.WriteFile():写入整个文件(覆盖)。
// 读取文件
data, err := os.ReadFile("test.txt")
if err != nil {
    log.Fatal(err)
}
fmt.Println(string(data))

// 写入文件
content := []byte("Hello, Go!")
err = os.WriteFile("output.txt", content, 0644) // 权限 0644
if err != nil {
    log.Fatal(err)
}
3. 文件信息
  • os.Stat():获取文件信息(大小、权限等)。
info, err := os.Stat("test.txt")
if err != nil {
    log.Fatal(err)
}
fmt.Println("文件名:", info.Name())
fmt.Println("大小:", info.Size(), "bytes")
fmt.Println("修改时间:", info.ModTime())
4. 文件操作扩展
  • os.OpenFile():更灵活地打开文件(支持读写、追加等模式)。
// 追加写入文件
file, err := os.OpenFile("log.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
    log.Fatal(err)
}
defer file.Close()

_, err = file.WriteString("New log entry\n")
if err != nil {
    log.Fatal(err)
}

二、目录操作

1. 创建目录
  • os.Mkdir():创建单级目录。
  • os.MkdirAll():创建多级目录。
err := os.Mkdir("mydir", 0755) // 权限 0755
if err != nil {
    log.Fatal(err)
}

err = os.MkdirAll("parent/child/grandchild", 0755) // 创建嵌套目录
if err != nil {
    log.Fatal(err)
}
2. 删除文件/目录
  • os.Remove():删除文件或空目录。
  • os.RemoveAll():递归删除目录及其内容。
err := os.Remove("oldfile.txt")
if err != nil {
    log.Fatal(err)
}

err = os.RemoveAll("obsolete_dir") // 强制删除非空目录
if err != nil {
    log.Fatal(err)
}
3. 遍历目录
  • os.ReadDir():读取目录内容。
entries, err := os.ReadDir(".")
if err != nil {
    log.Fatal(err)
}
for _, entry := range entries {
    fmt.Println(entry.Name())
}

三、环境变量

1. 获取/设置环境变量
  • os.Getenv():获取环境变量。
  • os.Setenv():设置环境变量(当前进程有效)。
path := os.Getenv("PATH")
fmt.Println("PATH:", path)

err := os.Setenv("TEMP_DIR", "/tmp")
if err != nil {
    log.Fatal(err)
}

四、进程与参数

1. 命令行参数
  • os.Args:获取命令行参数。
// 运行示例:go run main.go arg1 arg2
fmt.Println("程序名:", os.Args[0])
fmt.Println("参数:", os.Args[1:])
2. 进程退出
  • os.Exit():终止进程并返回状态码。
fmt.Println("程序即将退出")
os.Exit(1) // 非0状态码表示错误

五、其他实用函数

1. 工作目录
  • os.Getwd():获取当前目录。
  • os.Chdir():修改当前目录。
dir, err := os.Getwd()
if err != nil {
    log.Fatal(err)
}
fmt.Println("当前目录:", dir)

err = os.Chdir("/tmp") // 切换到 /tmp
if err != nil {
    log.Fatal(err)
}
2. 标准输入/输出
  • os.Stdin, os.Stdout, os.Stderr:标准流。
// 从标准输入读取并输出到标准输出
io.Copy(os.Stdout, os.Stdin)

六、文件权限

  • os.Chmod():修改文件权限。
err := os.Chmod("secret.txt", 0600) // 仅所有者可读写
if err != nil {
    log.Fatal(err)
}

相关文章:

  • SSA-随机森林分类预测matlab代码
  • 【Linux】https 协议
  • 用SpringBoot做一个web小案例配置拦截器判断登录状态
  • 某省政务信创案例:3阶段实施×5类工具链选型经验分享
  • 新型XCSSET恶意软件利用增强混淆技术攻击macOS用户
  • 【漫话机器学习系列】136.随机变量(Random Variable)
  • Windows系统中安装Rust工具链方法
  • VSCode + CMake
  • Linux 中的 likely 和 unlikely
  • Docker安装mysql——Linux系统
  • 安卓屏保调试
  • 五子棋小游戏-简单开发版
  • 【数据分析】读取文件
  • 部署 T-Pot:构建高级威胁捕获与分析平台的精妙指南
  • DNS服务和实验
  • uniapp 多环境配置打包,比较优雅的解决方案,全网相对优解
  • 自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计
  • 【为什么游戏能使人上瘾】
  • Windows安全日志Defender 的配置被修改5007
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(53)炼妖壶收子集 - 子集问题(位运算与回溯)
  • 这个死亡率第一的“老年病”,正悄悄逼近年轻人
  • 外媒:哈马斯一名高级指挥官尸体被发现,系辛瓦尔弟弟
  • 东航C919航线上新!正式投入上海虹桥—深圳航线运营
  • 人民网:激发博物馆创新活力,让“过去”拥有“未来”
  • 广西隆林突发山洪,致3人遇难1人失联
  • 终于,俄罗斯和乌克兰谈上了