golang文件读取-按指定BUFF大小读取方式
a.txt文件内容:
ABCDEFGHI
HELLOGOLANG
packagemain import( "fmt" "os" "io" ) funcmain(){ fileName:="C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\a.txt" file,err:=os.OpenFile(fileName,os.O_RDWR,0666) iferr!=nil{ fmt.Println("Openfileerror!",err) return } deferfile.Close() stat,err:=file.Stat() iferr!=nil{ panic(err) } varsize=stat.Size() fmt.Println("filesize=",size) //definereadblocksize=2 buf:=make([]byte,2) for{ length,err:=file.Read(buf) iferr!=nil{ iferr==io.EOF{ break }else{ fmt.Println("Readfileerror!",err) return } } fmt.Println(length,string(buf)) } fmt.Println("Filereadok!") }
输出:
每次读取2个字节的大小并输出
filesize=23 2AB 2CD 2EF 2GH 2I 2 H 2EL 2LO 2G 2OL 2AN 1GN Filereadok!
补充:golang数组append前后的地址变化
我就废话不多说了,大家还是直接看代码吧~
funcmain(){ res:=make([]int,0) res=append(res,1)//同函数内append前后地址不变 fori,v:=rangeres{ println(i,v) } }
打印:
01
funcsolve(res[]int){ res=append(res,1)//不在同一函数内append前后地址变 } funcmain(){ res:=make([]int,0) fori,v:=rangeres{ println(i,v) } }
打印:
空
因为append改变了原res的地址。所以改为:
funcsolve(res[]int)[]int{ returnappend(res,1) } funcmain(){ res:=make([]int,0) fori,v:=rangesolve(res){ println(i,v) } }
打印:
01
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。