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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。