3-golang中File相关操作
1. 带缓冲的Reader读取File
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("d:/test.txt")
if err != nil {
fmt.Println("打开文件失败")
}
defer file.Close()
// 创建一个 *Reader,带缓冲的
reader := bufio.NewReader(file)
// 循环读取文件内容
for {
// 读到一个换行就结束一次
str, err := reader.ReadString('\n')
if err == io.EOF { // 读到文件末尾
break
}
fmt.Print(str)
}
fmt.Println("读取完毕")
}
2. 一次性读取
适用于小文件
package main
import (
"fmt"
"io/ioutil"
)
func main() {
file := "d:/test.txt"
// content 是 []byte 切片
content, err := ioutil.ReadFile(file)
if err != nil {
fmt.Printf("read file err=%v", err)
}
fmt.Println(string(content))
}
3. 创建文件并写入内容
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
// 创建一个新文件,写入内容
file, err := os.OpenFile("d:/abc.txt", os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Printf("%v", err)
return
}
defer file.Close()
str := "hello world\r\n"
writer := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
writer.WriteString(str)
}
// writer是带缓存的 是先将内容写入缓存的,需要flush
writer.Flush()
}