文件操作

小凯   |     |   Golang学习笔记   |   8分钟   |   132浏览  

读取文件

golang中想要读取一个文件内容,必须要打开文件,然后才能从文件中读取文件操作。
简单的方式通过os包的Open函数打开文件。然后是读取操作*os.File.Read函数

// ReadFile 读取文件内容
func ReadFile(filePath string) (string, error) {
    //打开文件
    file, err := os.Open(filePath)
    if err != nil {
        return "", err
    }
    //函数操作完的最后一刻关闭文件
    defer file.Close()
    //读取的内容
    content := ""
    //创建缓冲流字节切片
    buffer := make([]byte, 4096)
    //循环读取文件内容
    for {
        n, err := file.Read(buffer)
        //读取失败时返回默认内容
        if err != nil && err != io.EOF {
            return "", err
        }
        //缓冲流读取完毕后跳出循环
        if n == 0 {
            break
        }
        content += string(buffer[:n])
    }
    //返回读取的内容
    return content, nil
}

写入文件

// WriteToFile 写入文件
func WriteToFile(filePath string, content string) error {
    //根据提供的文件路径创建文件
    file, err := os.Create(filePath)
    //处理异常
    if err != nil {
        return err
    }
    //当函数正常处理完毕的最后一刻,关闭该文件
    defer file.Close()
    //根据提供的文件内容往文件中写入数据
    _, err = file.WriteString(content)
    //处理异常
    if err != nil {
        return err
    }
    return nil
}

复制文件

// CopyFile 拷贝文件
func CopyFile(sourceFilePath, targetFilePath string) error {
    //打开源文件
    openFile, err1 := os.Open(sourceFilePath)
    //处理异常
    if err1 != nil {
        return err1
    }
    //创建目标文件
    createFile, err2 := os.Create(targetFilePath)
    //处理异常
    if err2 != nil {
        return err2
    }
    //在函数操作完的最后一刻,关闭两个文件
    defer createFile.Close()
    defer openFile.Close()
    //创建缓冲流字节切片
    bufferBytes := make([]byte, 4*1024)
    //按照缓冲流的大小循环读取文件内容
    for {
        //读取文件内容
        read, err3 := openFile.Read(bufferBytes)
        if err3 != nil {
            //读取文件末端时跳出循环,函数正常操作
            if err3 == io.EOF {
                break
            }
            return err3
        }
        //读取的内容写入新文件中
        _, err4 := createFile.Write(bufferBytes[:read])
        if err4 != nil {
            return err4
        }
    }
    return nil
}

OS包

在Go语言中,os包提供了与操作系统交互的函数和变量,让我们可以进行文件操作、环境变量访问、进程控制和错误处理等功能。下面是一些os包中常用的函数和类型的介绍:

  1. os.Args:是一个字符串切片,包含了命令行参数,其中os.Args[0]表示程序本身。
  2. 文件和目录操作:
    • os.Open:打开一个文件用于读取。
    • os.Create:创建一个文件用于写入。
    • os.OpenFile:以指定模式打开或创建文件。
    • os.Stat:获取文件的信息。
    • os.Remove:删除文件或目录。
    • os.Rename:重命名文件或目录。
    • os.Mkdir:创建新目录。
  3. 环境变量操作:
    • os.Getenv:获取指定环境变量的值。
    • os.Setenv:设置指定环境变量的值。
    • os.Environ:返回所有环境变量的键值对。
  4. 进程控制:
    • os.Exit:终止当前程序并返回指定退出码。
    • os.Getpid:获取当前进程ID。
    • os.Getppid:获取当前父进程ID。
  5. os.Stdinos.Stdoutos.Stderr:代表标准输入、标准输出和标准错误输出。
  6. 错误处理:
    • os.ErrInvalidos.ErrPermission等:定义了一些常见的错误变量。
    • os.PathErroros.LinkError:表示与文件操作相关的错误。

此外,os包还提供了一些其他的函数和类型,用于计时器、信号处理、临时文件等方面的操作。详细的文档可以在Go官方文档中找到。通过使用import "os"来导入os包,就可以在代码中使用这些功能了。

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  条评论