文章目录
一、go读写txt文本文件
1、行数据写入txt
package main
import (
"bufio"
"log"
"os"
"strconv"
"strings"
)
func main() {
WriteTxt()
}
func WriteTxt() {
// 打开文件路径 "D:/helloworld.txt"
// 只写方式打开 os.O_WRONLY
// os.FileMode(0600) 文件权限:windows系统权限失效。
file, err := os.OpenFile("D:/helloworld.txt", os.O_WRONLY, 0)
if err != nil {
log.Fatal(err)
}
// 关闭文件
defer file.Close()
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
// 写入一行
_, err := file.WriteString(strconv.Itoa(j) + " ")
if err != nil {
log.Fatal(err)
}
}
file.WriteString("\r\n")
}
}
2、行数据读取txt
package main
import (
"bufio"
"log"
"os"
"strconv"
"strings"
)
func main() {
ReadTxt()
}
func ReadTxt() {
file, err := os.Open("D:/helloworld.txt")
if err != nil {
log.Fatal(err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
strArr := strings.Split(line, " ")
for str := range strArr {
print(str, " ")
}
println()
}
}
3、文件的打开方式
1、os.O_RDONLY
只读方式打开文件,os.Open(filePath) 使用os.O_RDONLY打开文件,此时写入会返回错误 Access is denied.
func ReadTxt() {
file, err := os.Open("D:/helloworld.txt")
if err != nil {
log.Fatal(err)
return
}
defer file.Close()
n, err := file.WriteString("只读方式打开进行写入操作")
if err != nil {
// 打印错误 系统退出
log.Fatal(err)
}
println("写入字节数", n)
}
2、os.O_WRONLY
1、以只写的方式打开文件,读取不到内容
func ReadTxt() {
file, err := os.OpenFile("D:/helloworld.txt", os.O_WRONLY, 0)
if err != nil {
log.Fatal(err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
if scanner.Scan() {
println("可读")
} else {
// 程序打印:不可读
println("不可读")
}
}
2、以只写的方式打开文件,写入时会覆盖文件原始内容
func WriteTxt() {
file, err := os.OpenFile("D:/helloworld.txt", os.O_WRONLY, 0)
if err != nil {
log.Fatal(err)
}
// 关闭文件
defer file.Close()
file.WriteString("李四爱吃梨")
}
文件原始内容:张三爱吃苹果
执行代码以后:李四爱吃梨果
3、os.O_APPEND
1、追加方式写文件:
func WriteTxt() {
file, err := os.OpenFile("D:/helloworld.txt", os.O_APPEND, 0)
if err != nil {
log.Fatal(err)
}
// 关闭文件
defer file.Close()
n, err := file.WriteString("李四爱吃梨")
if err != nil {
log.Fatal(err)
}
println("写入字节数", n)
}
文件原始内容:张三爱吃苹果
执行代码以后:张三爱吃苹果李四爱吃梨。
2、追加方式读文件:
func ReadTxt() {
file, err := os.OpenFile("D:/helloworld.txt", os.O_APPEND, 0)
if err != nil {
log.Fatal(err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
println(scanner.Text())
}
}
执行代码以后:张三爱吃苹果李四爱吃梨
4、os.O_RDWR
读写方式打开,即可读也可写。
5、os.O_CREATE
创建方式打开文件,文件不存在时会创建文件。
版权声明:本文为weixin_56349119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。