Go语言 - 文件操作

Go语言文件操作涉及包有osio这两个。

使用字节操作读文件:

func readByteFromFile() {
        file, err := os.Open("go.mod")
        if err != nil {
                fmt.Printf("err >> %v\n", err)
        }
        defer file.Close()

        var tmp = make([]byte, 128)
        for {
                len, err := file.Read(tmp[:])
                if err == io.EOF {
                        break
                }
                if err != nil {
                        fmt.Printf("err >> %v\n", err)
                }
                fmt.Print(string(tmp[:len]))
        }
}

使用字符操作读取文件:

func readBuffFromFile() {
        file, err := os.Open("go.mod")
        if err != nil {
                fmt.Printf("err >> %v\n", err)
        }
        defer file.Close()

        reader := bufio.NewReader(file)
        for {
                str, err := reader.ReadString(\'\n\')
                if err == io.EOF {
                        break
                }
                if err != nil {
                        fmt.Printf("err >> %v\n", err)
                }
                fmt.Print(str)
        }
}

使用ioutil读取文件:

func readFileUseUtil() {
        str, err := ioutil.ReadFile("go.mod")
        if err != nil {
                fmt.Printf("err >> %v\n", err)
        } else {
                fmt.Println(string(str))
        }
}

使用File写文件:

func writeStringToFile(content string) (n int, err error) {
        file, err := os.OpenFile("demo.txt", os.O_WRONLY|os.O_CREATE, 0666)
        if err != nil {
                fmt.Printf("err >> %v\n", err)
        }
        defer file.Close()
        return file.WriteString(content)
}

// 调用方式:
n, err := writeStringToFile("Hi Gooooo!")
if err != nil {
        fmt.Printf("err >> %v\n", err)
}
fmt.Printf("写入长度n=%d\n", n)