golang读写文件

  • 读文件方式一

    // 方式一,以字节为单位读文件
    package main

    import (
    "fmt"
    "io"
    "os"
    )

    func main() {

    // 获得文件句柄, 只读权限
    f, err := os.Open("文件路径")
    if err != nil {
    fmt.Println("文件打开失败", err)
    return
    }

    defer func() {
    err := f.Close()
    if err != nil {
    fmt.Println("文件关闭失败")
    }
    }()

    // 创建临时数据存放数组
    tmpBuf := make([]byte, 1024)

    // 定义byte数组,用来存放所有数据
    var res []byte
    for {
    count, err := f.Read(tmpBuf)
    // count最大值是tmpBuf的长度

    if err == io.EOF {
    // 读取到了文件末尾
    break
    }
    currBytes := tmpBuf[:count]     // 从临时数组中提取读到的数据
    res = append(res, currBytes...) // 拼接新读取的数据
    }
    fmt.Println(string(res)) // 打印结果
    }
  • 读文件方式二

    // 方式二,一次读取文件全部内容
    package main

    import (
    "fmt"
    "os"
    )

    func main() {
     // 读取文件全部内容,并返回byte数组
    content, err := os.ReadFile("文件路径")
    if err != nil {
    fmt.Println("文件读取失败")
       return
    }
    fmt.Println(string(content))
    }
  • 写文件

    package main

    import (
    "fmt"
    "os"
    )

    func main() {
    // 获得文件句柄,需指定读写方式(第二个参数)和文件权限(第三个参数),文件权限的参数值对应linux下的文件权限数字。
    f, err := os.OpenFile("文件路径", os.O_RDWR|os.O_APPEND|os.O_CREATE, 0664)

    if err != nil {
    fmt.Println("文件打开失败")
    return
    }
     defer func() {
    _ = f.Close()
    }()
    // 要写入的数据
    data := []byte("Hello World!\n")
    // 写入数据,返回写入数据的字节数
    count, err := f.Write(data)
    if err != nil {
    fmt.Println("文件写入失败")
    return
    }
    fmt.Println("写入字节数", count)
    // 刷入磁盘
    _ = f.Sync()
    }

    // 读写方式介绍
    /*
    os.O_CREATE: create if none exists 不存在则创建
    os.O_RDONLY: read-only 只读
    os.O_WRONLY: write-only 只写
    os.O_RDWR: read-write 可读可写
    os.O_TRUNC: truncate when opened 文件长度截为0:即清空文件
    os.O_APPEND: append 追加新数据到文件
    */

    // 权限数字,可搜索linux权限详解。

     

posted on 2024-05-30 11:08  CJTARRR  阅读(54)  评论(0编辑  收藏  举报