文件读取与写入

读取

普通实现

package main

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

func main() {
    fileObj, err := os.Open("./main.go")
    if err != nil {
        fmt.Printf("open file faied,err:%v", err)
        return
    }
    //关闭文件
    defer fileObj.Close()
    var tmp [128]byte
    for {
        n, err := fileObj.Read(tmp[:])
        if err == io.EOF {
            fmt.Println("读完了")
            return
        }
        fmt.Printf("读了%d个字节\n", n)
        fmt.Println(string(tmp[:n]))
        if n < 128 {
            return
        }
    }
}

bufio这个包读文件

package main

import (
    "bufio"
    "fmt"
    "io"
    "io/ioutil"
    "os"
)

//利用bufio逐行读取

func readFromFilebyBufio() {
    fileObj, err := os.Open("./main.go")
    if err != nil {
        fmt.Printf("open file failed:%v", err)
        return
    }
    defer fileObj.Close()
    reader := bufio.NewReader(fileObj)
    for {
        line, err := reader.ReadString('\n')
        if err == io.EOF {
            return
        }
        if err != nil {
            fmt.Printf("read line failed,err:%v", err)
            return
        }
        fmt.Println(line)
    }
}

//利用ioutil读取整个文件
func readFromFilebyIoutil() {
    ret, err := ioutil.ReadFile("./main.go")
    if err != nil {
        fmt.Println("读取错误")
        return
    }
    fmt.Println(string(ret))
}

func main() {
    // readFromFilebyBufio()
    readFromFilebyIoutil()
}

写入

package main

import (
    "bufio"
    "fmt"
    "os"
)

func writedemo1() {
    //O_APPEND 表示追加,O_CREATE表示没有的话新建文件,O_TRUNC表示清空,与运算表示都需要这些操作
    fileObj, err := os.OpenFile("./xx.txt", os.O_APPEND|os.O_CREATE|os.O_TRUNC, 0644)
    if err != nil {
        fmt.Println("错误")
        return
    }
    //写
    fileObj.Write([]byte("qweeeeeeee\n")) //写入切片数据
    fileObj.WriteString("asdasdas")       //直接写入字符串数据
    fileObj.Close()
}

func writeDemo2() {
    fileObj, err := os.OpenFile("./xx.txt", os.O_APPEND|os.O_CREATE|os.O_TRUNC, 0644)
    if err != nil {
        fmt.Println("错误")
        return
    }
    defer fileObj.Close()
    //创建一个写对象
    wr := bufio.NewWriter(fileObj)
    wr.WriteString("hello") //写到缓存中
    wr.Flush()              //将缓存内容写入文件
}

func main() {
    writeDemo2()
}
Last modification:April 22, 2022
如果觉得我的文章对你有用,请随意赞赏