GoLang几种读文件方式的比较
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。那他们的效率如何呢?用一个简单的程序来评测一下:package mainim
千家信息网最后更新 2026年10月31日GoLang几种读文件方式的比较
GoLang提供了很多读文件的方式,一般来说常用的有三种。使用Read加上buffer,使用bufio库和ioutil 库。
那他们的效率如何呢?用一个简单的程序来评测一下:
package mainimport( "fmt" "os" "flag" "io" "io/ioutil" "bufio" "time")func read1(path string)string{ fi,err := os.Open(path) if err != nil{ panic(err) } defer fi.Close() chunks := make([]byte,1024,1024) buf := make([]byte,1024) for{ n,err := fi.Read(buf) if err != nil && err != io.EOF{panic(err)} if 0 ==n {break} chunks=append(chunks,buf[:n]...) // fmt.Println(string(buf[:n])) } return string(chunks)}func read2(path string)string{ fi,err := os.Open(path) if err != nil{panic(err)} defer fi.Close() r := bufio.NewReader(fi) chunks := make([]byte,1024,1024) 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[:n]...) // fmt.Println(string(buf[:n])) } return string(chunks)}func read3(path string)string{ fi,err := os.Open(path) if err != nil{panic(err)} defer fi.Close() fd,err := ioutil.ReadAll(fi) // fmt.Println(string(fd)) return string(fd)}func main(){ flag.Parse() file := flag.Arg(0) f,err := ioutil.ReadFile(file) if err != nil{ fmt.Printf("%s\n",err) panic(err) } fmt.Println(string(f)) start := time.Now() read1(file) t1 := time.Now() fmt.Printf("Cost time %v\n",t1.Sub(start)) read2(file) t2 := time.Now() fmt.Printf("Cost time %v\n",t2.Sub(t1)) read3(file) t3 := time.Now() fmt.Printf("Cost time %v\n",t3.Sub(t2))}运行命令go run read.go filename, 制定需要读取的文件就可以了。这里我比较了读取13.7MB的日志文件,三种方式分别消耗的时间是:
Cost time 105.006ms
Cost time 68.0039ms
Cost time 31.0018ms
读取29.3MB的媒体文件:
Cost time 390.0223ms
Cost time 194.0111ms
Cost time 83.0048ms
读取302MB的媒体文件
Cost time 40.8043338s
Cost time 1m5.0407201s
Cost time 8.8155043s
这个差距就很明显了,ioutil提供的方法效率就是高。有空可以再从代码层面再去分析一下。
文件
方式
媒体
媒体文件
效率
明显
一般来说
代码
命令
就是
层面
差距
常用
方法
日志
时间
程序
分析
消耗
评测
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网络科技有限公司
致聘互联网科技
银优互联网科技有限公司
火传媒上海互联网科技
美国互联网前沿科技
华脉科技工业互联网产品
富国互联网科技创新基金
中国互联网有什么科技含量
互联网科技教育视频
苏州五指互联网络科技有限
知域互联网科技有限公司大骗子
乌苏新华互联网科技做什么的
燊美集互联网科技有限公司
互联网科技公司营业执照怎么办理
为客找房互联网科技公司怎么样
启辰互联网科技
浙南科技城互联网大厦招聘
互联网科技手机排行榜
互联网界的黑科技
今日互联网科技
互联网是不是新科技
互联网 科技
以房互联网科技
左右互联网络科技
银川新华互联网科技学校地址
科技赋能视角下互联网保险发展
保险科技服务互联网营销体系
富国互联网科技002692
重庆科技产业互联网有哪些