文件打开读取
所有跟文件相关的操作都用os模块
通过数组做缓冲来读取文件
这个自己决定读取多少内容
package main
import (
"fmt"
"os"
)
func main() {
fileObj, err := os.Open("./main.go")
fmt.Println(err)
if err != nil {
fmt.Printf("open file failed , err:%v\n", err)
return
}
//记得关闭文件
defer fileObj.Close() //函数要退出时再执行,关闭文件
//指定读的长度为128比特
var tmp [128]byte
for {
n, err := fileObj.Read(tmp[:]) //此处tmp[:]就是作为缓冲区,暂存文件内容
if err != nil {
fmt.Printf("read from file failed, err:%v\n", err)
return
}
fmt.Printf("读了%d个字节", n)
fmt.Printf(string(tmp[:]))
if n < 128 {
return
}
}
}
通过bufio来作为缓冲读文件
这个是一行一行的读取文件
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func readFrombyBufio() {
fileObj, err := os.Open("./main.go")
if err != nil {
fmt.Printf("open file failed , err:%v\n", err)
}
defer fileObj.Close()
reader := bufio.NewReader(fileObj)
for {
//此处意思是文件以回车作为返回值
line, err := reader.ReadString('\n')
//这里的意思是文件读取到文件末尾就退出
if err == io.EOF {
return
}
//这里的意思是读到文件出错就退出
if err != nil {
fmt.Printf("read line field, err:%v\n", err)
return
}
fmt.Print(line)
}
}
func main() {
readFrombyBufio()
}
通过ioutil读取文件
最简单的方法直接指定一个文件名把所有的文件都读取出来
package main
import (
"fmt"
"io/ioutil"
)
func readFromIoutil() {
ret, err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Printf("read file failed , err:%v\n", err)
return
}
fmt.Println(string(ret))
}
func main() {
readFromIoutil()
}

浙公网安备 33010602011771号