CodeFun Go

两种方式实现写文件

写文件有两种方式。

第一种方式

这是一种简单直接的方式。函数 ioutil.WriteFile 可以向指定文件写入数据。

语法如下:

ioutil.WriteFile(filename string, data []byte, perm os.FileMode) error

如果文件不存在将按给出的权限创建文件。注意写入数据之前将会清空文件。

第二种方式

分三步来实现写文件,首先创建或打开文件,然后写入文件,最后关闭文件。

对这个任务,首先使用 os.Open 函数打开一个文件,获取一个 os.File 类型的文件 f。

紧接着立即使用 defer 调用文件的 Close。

使用 f.Write 或 f.WriteString 写入字节切片或字符串。

package main

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

func main() {
    // 1
    d1 := []byte("hello\ngo\n")
    err := ioutil.WriteFile("/path/to/boo", d1, 0644)
	if err != nil {
        panic(err)
    }

    // 2
    f, err := os.Open("/path/to/foo")
	if err != nil {
        panic(err)
    }
	defer f.Close()
	
    n1, err := f.Write([]byte{115, 111, 109, 101, 10})
	if err != nil {
        panic(err)
    }
	fmt.Printf("wrote %d bytes\n", n1)
	n2, err := f.WriteString("hello\ngo\n")
	if err != nil {
        panic(err)
    }
    fmt.Printf("wrote %d bytes\n", n2)
}