前言
我感觉学语言,至少也得学一下读写文件把……
读文件
go有三种读写文件的方式,分别在os、ioutil、bufio包中,下面分别举例使用三种方式从文件中读取数据,写操作类似。
go官网中都有相应的说明。附地址
os
使用最传统的方式,Open,Read,Close,在os包中。
package main
import (
"fmt"
"os"
)
func main() {
userFile := "test.txt"
fl, err := os.Open(userFile)
if err != nil {
fmt.Println(userFile, err)
return
}
defer fl.Close()
buf := make([]byte, 1024)
for {
n, _ := fl.Read(buf)
if 0 == n {
break
}
os.Stdout.Write(buf[:n])
}
}
iotuil
ioutil非常简单,一次把文件的所有内容都读出来。如果文件较大,会占用很多内存。
package main
import (
"fmt"
"io/ioutil"
)
func main() {
buff, err := ioutil.ReadFile("test.txt")
if err != nil {
panic("open failed!")
}
fmt.Print(string(buff))
}
bufio
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
f, err := os.Open("test.txt")
if err != nil {
panic("open failed!")
}
defer f.Close()
b := bufio.NewReader(f)
line, err := b.ReadString('\n')
for ; err == nil; line, err = b.ReadString('\n') {
fmt.Print(line)
}
if err == io.EOF {
fmt.Print(line)
} else {
panic("read occur error!")
}
}
2016-04-25 19:16:00 hzct
作者:赵德栋,作者介绍
本博客的文章集合:http://zhaodedong.com/category/