Go语言io.WriteString写入文件

Go语言io.WriteString写入文件教程

Golang 中,写 文件 有四种方法,分别为:使用 io.WriteString 写文件,使用 ioutil.WriteFile 写文件,使用 file.Write 写文件,使用 writer.WriteString 写文件。

io.WriteString写文件

语法

func WriteString(w Writer, s string) (n int, err error)

参数

参数 描述
w Writer 对象。
s 要写入的文件内容。

返回值

返回值 描述
n 写入的字节数。
err 写入失败,则返回错误信息。

说明

使用 WriteString 方法写文件,接受的第一个 参数 是一个 Writer 接口,第二个参数是一个 stirng 类型的要写入的字符串。

如果写入成功,返回成功写入的字节数,如果写入失败,返回 error 信息,在写入文件之前,我们需要判断文件是否存在,如果文件不存在,则需要创建文件。

案例

io.WriteString写文件

使用 io.WriteString 写文件

package main import ( "fmt" "io" "io/ioutil" "os" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") var( fileName = "C:/haicoder.txt" content = "Hello HaiCoder" file *os.File err error ) //使用追加模式打开文件 file, err = os.OpenFile(fileName, os.O_APPEND, 0666) if err != nil{ fmt.Println("Open file err =", err) return } defer file.Close() //写入文件 n, err := io.WriteString(file, content) if err != nil{ fmt.Println("Write file err =", err) return } fmt.Println("Write file success, n =", n) //读取文件 fileContent, err := ioutil.ReadFile(fileName) if err != nil{ fmt.Println("Read file err =", err) return } fmt.Println("Read file success =", string(fileContent)) }

程序运行后,控制台输出如下:

09_golang WriteString写入文件.png

因为文件 “C:/haicoder.txt” 存在,因此,我们直接使用 os.OpenFile 并且使用追加模式打开了该文件,接着,直接使用 io.WriteString 方法写入文件。

写入文件成功后,我们使用 ioutil.ReadFile 一次性读出了整个文件内容,我们发现读出来的文件内容与写入的文件内容一样。

现在,我们将文件 “C:/haicoder.txt” 删除,再次运行程序,控制台输出如下:

10_golang WriteString写入文件.png

我们看到,程序报错,因为文件不存在,所以打开失败,因此,为了程序的健壮性,我们在打开文件之前,应该判断文件是否存在,如果不存在,则应该创建文件,将程序修改如下:

package main import ( "fmt" "io" "io/ioutil" "os" ) // 判断所给路径文件/文件夹是否存在 func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } func main() { fmt.Println("嗨客网(www.haicoder.net)") var( fileName = "C:/haicoder.txt" content = "Hello HaiCoder" file *os.File err error ) if Exists(fileName){ //使用追加模式打开文件 file, err = os.OpenFile(fileName, os.O_APPEND, 0666) if err != nil{ fmt.Println("Open file err =", err) return } }else{ file, err = os.Create(fileName) //创建文件 if err != nil { fmt.Println("file create fail") return } } defer file.Close() //写入文件 n, err := io.WriteString(file, content) if err != nil{ fmt.Println("Write file err =", err) return } fmt.Println("Write file success, n =", n) //读取文件 fileContent, err := ioutil.ReadFile(fileName) if err != nil{ fmt.Println("Read file err =", err) return } fmt.Println("Read file success =", string(fileContent)) }

程序运行后,控制台输出如下:

11_golang WriteString写入文件.png

我们自定义了一个 Exists 函数,Exists 函数的功能是使用 os.Stat 判断文件是否存在,如果存在,则返回 true,否则返回 false。

接着,在写入文件之前,我们首先使用 Exists 函数判断文件是否存在,如果文件存在,如直接打开,如果文件不存在,则我们使用 Create 创建文件,之后再写入文件。

io.WriteString写文件总结

func WriteString(w Writer, s string) (n int, err error)

使用 WriteString 方法写文件,接受的第一个参数是一个 Writer 接口,第二个参数是一个 stirng 类型的要写入的字符串。

如果写入成功,返回成功写入的字节数,如果写入失败,返回 error 信息,在写入文件之前,我们需要判断文件是否存在,如果文件不存在,则需要创建文件。