go语言读文件学习总结
1、使用指针对象读文件
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("./main.go")
if err != nil {
fmt.Println("open file failed")
return
}
defer file.Close()
var content []byte
var buf [128]byte
for {
n, err := file.Read(buf[:])
if err == io.EOF {
break
}
if err != nil {
fmt.Println("read file faild")
return
}
content = append(content, buf[:n]...)
}
fmt.Println(string(content))
}
只能读取文件中的128个字符,如果读取全部,使用for循环读取
2、使用bufio 读取文件
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
)
func main() {
inputFile, err := os.Open("./main.go")
if err != nil {
log.Fatal(err)
}
defer inputFile.Close()
reader := bufio.NewReader(inputFile)
for {
line, err := reader.ReadString('\n')
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
return
}
fmt.Println(line)
}
}
使用bufio 读文件,因为是读取到内存中,如果程序在运行过程中,关机则可能造成读取内容丢失。
3、使用ioutil读取文件
package main
import (
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Println("read file faild")
return
}
fmt.Println(string(content))
}
读取文件全部内容
要求:按行读取文件
1.使用for 循环
2.使用for循环采用bufio 读取文件 以'\n'为分隔符