Golang Os标准库
时间:2025-1-10 20:58 作者:杨佳乐 分类: Golang
package main
import (
"fmt"
"os"
)
func main(){
// os 标准库提供了操作系统功能的接口,主要用于文件操作、环境变量管理、进程控制等
// 文件操作
//打开文件
// os.Open(name string) (*os.File, error):只读方式打开文件。
// os.OpenFile(name string, flag int, perm FileMode) (*os.File, error):指定模式打开文件
file, err := os.Open("./1-基本语法.go")
if err != nil {
fmt.Println("打开文件失败",err)
return
}
defer file.Close() // 关闭文件
fmt.Println("打开文件成功",file.Name())
//创建文件
//os.Create(name string) (*os.File, error):创建文件(如果已存在,会清空)
file2, err := os.Create("test.txt")
if err != nil{
fmt.Println("创建文件失败",err)
return
}
file2.Close()
fmt.Println("创建文件成功")
//删除文件
//os.Remove(name string) error:删除文件或空目录
err = os.Remove("test.txt")
if err != nil{
fmt.Println("删除文件失败")
return
}
fmt.Println("删除文件成功")
// 目录操作
//创建目录
// os.Mkdir(name string, perm FileMode) error:创建单级目录。
// os.MkdirAll(path string, perm FileMode) error:递归创建多级目录。
err = os.Mkdir("testdir", 0755)
if err != nil {
fmt.Println("目录创建失败:", err)
return
}
fmt.Println("目录创建成功")
//删除目录
// os.Remove(name string) error:删除空目录。
// os.RemoveAll(path string) error:递归删除目录及其内容。
err = os.RemoveAll("testdir")
if err != nil {
fmt.Println("目录删除失败:", err)
return
}
fmt.Println("目录删除成功")
//读取目录内容
//os.ReadDir(name string) ([]os.DirEntry, error):读取目录中的内容
entries, err := os.ReadDir(".")
if err != nil {
fmt.Println("读取目录失败:", err)
return
}
for _, entry := range entries {
fmt.Println(entry.Name())
}
// 环境变量
// 获取环境变量
// os.Getenv(key string) string:获取环境变量的值。
// os.LookupEnv(key string) (string, bool):安全获取环境变量,判断是否存在。
value := os.Getenv("HOME")
fmt.Println("HOME 环境变量:", value)
// 设置环境变量
// os.Setenv(key, value string) error:设置环境变量。
// err := os.Setenv("MY_VAR", "123")
// if err != nil {
// fmt.Println("设置环境变量失败:", err)
// return
// }
// fmt.Println("环境变量设置成功:", os.Getenv("MY_VAR"))
// 删除环境变量
// os.Unsetenv(key string) error:删除环境变量
// err := os.Unsetenv("MY_VAR")
// if err != nil {
// fmt.Println("删除环境变量失败:", err)
// return
// }
// fmt.Println("环境变量已删除")
// 进程操作
//获取当前进程信息
// os.Getpid() int:获取当前进程 ID。
// os.Getppid() int:获取父进程 ID。
fmt.Println("当前进程 ID:", os.Getpid())
fmt.Println("父进程 ID:", os.Getppid())
//退出程序
// fmt.Println("程序开始")
// os.Exit(0)
// fmt.Println("这行不会被执行")
// 获取和设置文件信息
// 获取文件信息
//os.Stat(name string) (os.FileInfo, error):获取文件或目录信息
// info, err := os.Stat("example.txt")
// if err != nil {
// fmt.Println("获取文件信息失败:", err)
// return
// }
// fmt.Println("文件名:", info.Name())
// fmt.Println("文件大小:", info.Size())
// fmt.Println("是否为目录:", info.IsDir())
// 修改文件权限
// os.Chmod(name string, mode FileMode) error:修改文件权限。
// 总结
// os 包主要用于以下功能:
// 文件和目录操作:创建、删除、读取、修改。
// 环境变量管理:获取、设置、删除。
// 进程管理:获取进程信息、退出程序。
// 文件信息:获取文件元信息、修改权限。
}
标签: Golang标准库