本文摘自php中文网,作者angryTom,侵删。

golang读写文件的几种方法
读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件
读文件方式一:利用ioutil.ReadFile直接从文件读取到[]byte中
相关推荐:golang教程
1 2 3 4 5 6 7 | func Read0() (string){
f, err := ioutil.ReadFile( "file/test" )
if err != nil {
fmt.Println( "read fail" , err)
}
return string(f)
}
|
读文件方式二:先从文件读取到file中,再从file读取到buf,buf再追加到最终的[]byte
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 26 27 28 | func Read1() (string){
f, err := os.Open( "file/test" )
if err != nil {
fmt.Println( "read fail" )
return ""
}
defer f.Close()
var chunk []byte
buf := make([]byte, 1024)
for {
n, err := f.Read(buf)
if err != nil && err != io.EOF{
fmt.Println( "read buf fail" , err)
return ""
}
if n == 0 {
break
}
chunk = append(chunk, buf[:n]...)
}
return string(chunk)
}
|
读文件方式三:先从文件读取到file, 在从file读取到Reader中,从Reader读取到buf, buf最终追加到[]byte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | func Read2() (string) {
fi, err := os.Open( "file/test" )
if err != nil {
panic(err)
}
defer fi.Close()
r := bufio.NewReader(fi)
var chunks []byte
buf := make([]byte, 1024)
for {
n, err := r.Read(buf)
if err != nil && err != io.EOF {
panic(err)
}
if 0 == n {
break
}
chunks = append(chunks, buf...)
}
return string(chunks)
}
|
读文件方式四:读取到file中,再利用ioutil将file直接读取到[]byte中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | func Read3() (string){
f, err := os.Open( "file/test" )
if err != nil {
fmt.Println( "read file fail" , err)
return ""
}
defer f.Close()
fd, err := ioutil.ReadAll(f)
if err != nil {
fmt.Println( "read to fd fail" , err)
return ""
}
return string(fd)
}
|
PHP中文网,大量编程入门教程,欢迎学习!
以上就是golang读写文件的几种方法的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
golang 三种指针类型具体类型的指针、unsafe.pointer、uintptr作用
golang入门一:变量
leetcode153 寻找旋转排序数组中的最小值 golang
golang实现微信支付v2版本
windows10下编译go项目为linux可执行文件
golang实战群:日志的处理机制
修改文件夹下面所有.jpg文件名demo ->欢迎加入微信交流群一起交流学习go
一个基于 beego 开发的社交商城博客系统
go语言开篇
手撸golang 行为型设计模式 委派模式
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang读写文件的几种方法