本文摘自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 (v2)分布式id生成系统,高性能、高可用、易扩展的id生成服务
go - 一个对新手很友好的项目(带界面)
golang中判断两个slice是否相等
go好用的类型转换第三方组件
解析go中的多态 -无需interfaces
go mod特定依赖包处理
【golang语言社区投稿】golang高并发基于协程,通道的任务池
2021-04-19
自制文件系统 — 04 hellofs 进阶 分布式加密文件系统
golang怎么把字符串转成int类型
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang读写文件的几种方法