Append to a file in Go

后端 未结 6 709
一个人的身影
一个人的身影 2020-12-04 08:12

So I can read from a local file like so:

data, error := ioutil.ReadFile(name)

And I can write to a local file

ioutil.WriteF         


        
相关标签:
6条回答
  • 2020-12-04 08:43

    Figured it out

    More info

    f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0644) 
    
    n, err := f.WriteString(text) 
    
    f.Close()
    
    0 讨论(0)
  • 2020-12-04 08:47

    Let's say you want to add the contents of filecurrent to the file all, then below code is working:

    func updateTrx() {
        var err error
        var f *os.File
    
        // If the file doesn't exist, create it, or append to the file
        if f, err = os.OpenFile("all.csv", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644); err != nil {
            log.Fatal(err)
        }
        defer func() {
            if err := f.Close(); err != nil {
                log.Fatal("error", err)
            }
        }()
    
        var current *os.File
        if current, err = os.OpenFile("current.csv", os.O_RDONLY, 0); err != nil {
            log.Fatal("error", err)
        }
    
        defer func() {
            if err := current.Close(); err != nil {
                log.Fatal("error", err)
            }
        }()
    
        if fileBytes, err := ioutil.ReadAll(current); err != nil {
            log.Fatal("error", err)
        } else {
            if _, err := f.Write([]byte(fileBytes)); err != nil {
                log.Fatal(err)
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-04 08:55

    This answers works in Go1:

    f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
    if err != nil {
        panic(err)
    }
    
    defer f.Close()
    
    if _, err = f.WriteString(text); err != nil {
        panic(err)
    }
    
    0 讨论(0)
  • 2020-12-04 08:56

    ... I would use fmt.Fprintf, because accept a writer... and a connection or files will be a writer and easy to write in a way of string...

    f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
    if err != nil {
        panic(err)
    }
    
    defer f.Close()
    fmt.Fprintf(f, "%s", text)
    

    I hope this help!

    Javier,

    0 讨论(0)
  • 2020-12-04 08:57

    If you also want to create the file

    f, err := os.OpenFile(filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)

    0 讨论(0)
  • 2020-12-04 08:58

    Go docs has a perfect example :

    package main
    
    import (
        "log"
        "os"
    )
    
    func main() {
        // If the file doesn't exist, create it, or append to the file
        f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
        if err != nil {
            log.Fatal(err)
        }
        if _, err := f.Write([]byte("appended some data\n")); err != nil {
            log.Fatal(err)
        }
        if err := f.Close(); err != nil {
            log.Fatal(err)
        }
    }
    
    0 讨论(0)
提交回复
热议问题