打开txt

二进制打开:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
"fmt"
"os"
)

func main() {
i, v := os.Open("test.txt") //打开文件
if v != nil { //如果报错了进入if
fmt.Println("打开文件失败", v)
return
}
defer i.Close() //最后关闭文件
var k = make([]byte, 128) //创建一个容量为128字节的切片
for {
h, l := i.Read(k) //开始读取,把读取的数据放入切片k中,h是读取了多少字节,l是报错信息
fmt.Println(string(k[:h]), h, l) //打印读取的内容
if h < 128 {
return
}
}

}

按行打开:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
"bufio"
"fmt"
"io"
"os"
)

func main() {
i, v := os.Open("test.txt") //打开文件
if v != nil { //如果报错了进入if
fmt.Println("打开文件失败", v)
return
}
defer i.Close() //最后关闭文件
h := bufio.NewReader(i)
for {
l, err := h.ReadString('\n') //读到换行
fmt.Print(l)
if err == io.EOF { //如果读到末尾就会进入
return
}
}
}

写入txt

普通写入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
"bufio"
"fmt"
"os"
)

func main() {
filePath := "test.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("文件打开失败", err)
}
//及时关闭file句柄
defer file.Close()

//写入文件时,使用带缓存的 *Writer
write := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
write.WriteString("test info")
}
//Flush将缓存的文件真正写入到文件中
write.Flush()
}

以追加的形式写入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
"bufio"
"fmt"
"os"
)

func main() {
filePath := "test.txt"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
fmt.Println("文件打开失败", err)
}
//及时关闭file句柄
defer file.Close()

//写入文件时,使用带缓存的 *Writer
write := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
write.WriteString("test info")
}
//Flush将缓存的文件真正写入到文件中
write.Flush()
}