关于golang:golang-写入文件的四种方法

41次阅读

共计 1543 个字符,预计需要花费 4 分钟才能阅读完成。

go 中写入数据到文件中有以下四种办法
1.bufio.NewWriter
2.io.WriteString
3.ioutil.WriteFile
4.File(Write,WriteString)

package main

import (
    "bufio" // 缓存 IO
    "fmt"
    "io"
    "io/ioutil" //io 工具包
    "os"
)

func main() {
    var wireteString = "测试 n"
    var filename = "./output1.txt"
    var f *os.File
    var err1 error
    /***************************** 第一种形式: 应用 io.WriteString 写入文件 ***********************************************/
    if checkFileIsExist(filename) { // 如果文件存在
        f, err1 = os.OpenFile(filename, os.O_APPEND, 0666) // 关上文件
        fmt.Println("文件存在")
    } else {f, err1 = os.Create(filename) // 创立文件
        fmt.Println("文件不存在")
    }
    check(err1)
    n, err1 := io.WriteString(f, wireteString) // 写入文件 (字符串)
    check(err1)
    fmt.Printf("写入 %d 个字节 n", n)

    /*****************************  第二种形式: 应用 ioutil.WriteFile 写入文件 ***********************************************/
    var d1 = []byte(wireteString)
    err2 := ioutil.WriteFile("./output2.txt", d1, 0666) // 写入文件 (字节数组)
    check(err2)

    /*****************************  第三种形式:  应用 File(Write,WriteString) 写入文件 ***********************************************/
    f, err3 := os.Create("./output3.txt") // 创立文件
    check(err3)
    defer f.Close()
    n2, err3 := f.Write(d1) // 写入文件 (字节数组)
    check(err3)
    fmt.Printf("写入 %d 个字节 n", n2)
    n3, err3 := f.WriteString("writesn") // 写入文件 (字节数组)
    fmt.Printf("写入 %d 个字节 n", n3)
    f.Sync()

    /***************************** 第四种形式:  应用 bufio.NewWriter 写入文件 ***********************************************/
    w := bufio.NewWriter(f) // 创立新的 Writer 对象
    n4, err3 := w.WriteString("bufferedn")
    fmt.Printf("写入 %d 个字节 n", n4)
    w.Flush()
    f.Close()}

func check(e error) {
    if e != nil {panic(e)
    }
}

/**
 * 判断文件是否存在  存在返回 true 不存在返回 false
 */
func checkFileIsExist(filename string) bool {
    var exist = true
    if _, err := os.Stat(filename); os.IsNotExist(err) {exist = false}
    return exist
}

正文完
 0