«

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标准库