Go语言操作文本文件(附带实例)
Go 语言的 os 包用于执行文本文件的写入、追加、读取操作。
在 os 包中,包含 OpenFile() 函数,其语法格式如下:
下面列举几个在程序开发过程中常用的文件处理参数(flag),如下表所示:
熟悉表中的几个常用的文件处理参数,接下来通过几个实例演示文件处理参数的使用方法。
【实例 1】向新建文件写入古诗诗句。在当前程序所在的目录下,创建 poetry.txt 文件。使用带缓存的 Writer,向其中写入如下的诗句:青海长云暗雪山,孤城遥望玉门关。黄沙百战穿金甲,不破楼兰终不还。代码如下:

图 1 创建的poetry.txt文件
并且缓存的诗句也被写入其中(见下图):

图 2 poetry.txt中的内容
【实例 2】向已经存在的 poetry.txt 中追加古诗的诗名和作者。代码如下:

图 3 追加古诗的诗名和作者到poetry.txt中
【实例 3】把 poetry.txt 中的内容打印在控制台上。
在 os 包中,包含 OpenFile() 函数,其语法格式如下:
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)参数说明如下:
- name:文件的文件名;
- flag:文件的处理参数,数据类型为 int 类型。
下面列举几个在程序开发过程中常用的文件处理参数(flag),如下表所示:
| 文件处理参数的值 | 说明 |
|---|---|
| O_RDONLY | 使用只读模式打开文件 |
| O_WRONLY | 使用只写模式打开文件 |
| O_RDWR | 使用读写模式打开文件 |
| O_APPEND | 在对文件执行写操作时,把数据追加到文件的尾部 |
| O_CREATE | 如果文件不存在,则创建新文件 |
| O_EXCL | 和 O_CREATE 配合使用,文件必须不存在,否则返回错误 |
| O_SYNC | 当执行一系列写操作时,每次都要等待上次的 I/O 操作完成后再执行 |
| O_TRUNC | 在打开文件时清空文件 |
熟悉表中的几个常用的文件处理参数,接下来通过几个实例演示文件处理参数的使用方法。
【实例 1】向新建文件写入古诗诗句。在当前程序所在的目录下,创建 poetry.txt 文件。使用带缓存的 Writer,向其中写入如下的诗句:青海长云暗雪山,孤城遥望玉门关。黄沙百战穿金甲,不破楼兰终不还。代码如下:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
//打开文件
//0666 表示当前文件没有特殊权限,任何用户都可以对其执行写入、读取操作
file, err := os.OpenFile("poetry.txt", os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("打开文件失败", err)
}
//关闭文件
defer file.Close()
//使用带缓存的 Writer
write := bufio.NewWriter(file)
write.WriteString("青海长云暗雪山,")
write.WriteString("孤城遥望玉门关。")
write.WriteString("黄沙百战穿金甲,")
write.WriteString("不破楼兰终不还。")
//将缓存的数据写入文件
write.Flush()
fmt.Println("诗句已写入文件,请查看!") //打印提示信息
}
运行程序后,当控制台打印“诗句已写入文件,请查看!”时,说明在当前程序所在的目录下,已经创建 poetry.txt 文件(见下图):
图 1 创建的poetry.txt文件
并且缓存的诗句也被写入其中(见下图):

图 2 poetry.txt中的内容
【实例 2】向已经存在的 poetry.txt 中追加古诗的诗名和作者。代码如下:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
//打开文件
file, err := os.OpenFile("poetry.txt", os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
fmt.Println("打开文件失败", err)
}
//关闭文件
defer file.Close()
//使用带缓存的 Writer
write := bufio.NewWriter(file)
write.WriteString("\n《从军行七首·其四》\n")
write.WriteString("王昌龄\r\n")
//将缓存的数据写入文件
write.Flush()
fmt.Println("古诗的诗名和作者已追加到 poetry.txt 中,请查看!") //打印提示信息
}
运行程序后,当控制台打印“古诗的诗名和作者已追加到 poetry.txt 中,请查看!”时,说明古诗的诗名和作者已经追加到 poetry.txt 中,如下图所示:
图 3 追加古诗的诗名和作者到poetry.txt中
【实例 3】把 poetry.txt 中的内容打印在控制台上。
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
// 打开文件
file, err := os.OpenFile("poetry.txt", os.O_RDWR|os.O_APPEND, 0666)
if err != nil {
fmt.Println("打开文件失败", err)
return
}
// 及时关闭文件
defer file.Close()
// 读取 poetry.txt 中的数据
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('\n') // 原图写成了 'In',已修正
if err == io.EOF {
break
}
fmt.Print(str) // 打印已经读取的数据
}
}
运行结果如下:
青海长云暗雪山,孤城遥望玉门关。黄沙百战穿金甲,不破楼兰终不还。
《从军行七首·其四》
王昌龄
ICP备案:
公安联网备案: