前端之家收集整理的这篇文章主要介绍了
golang学习的点点滴滴:读写文件(面向过程版),
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
packagemain
import(
"fmt"
"bufio"
"io"
"os"
"flag"
"strconv"
)
//使用命令行-in默认为infile
varin*string=flag.String("in","infile","inputfilename...")
varout*string=flag.String("out","outfile","outputfilename...")
funcmain(){
//解析命令行
flag.Parse()
deferfunc(){
//如果发现异常...
ifex:=recover();nil!=ex{
fmt.Println(ex)
}
}()
value,err:=read()
ifnil!=err{
//抛出异常
panic(err)
}
write(value)
}
funcwrite(value[]int)(errerror){
//创建文件
file,err2:=os.Create(*out)
ifnil!=err2{
err=err2
fmt.Println("errortocreatefile...")
return
}
//不管怎么着,最后都关闭文件
deferfile.Close()
for_,res:=rangevalue{
//将int类型转化成string
str:=strconv.Itoa(res+2)
//将string写入file中
file.WriteString(str+"\n")
}
returnnil
}
funcread()(result[]int,errerror){
//打开文件
file,err1:=os.Open(*in)
ifnil!=err1{
err=err1
return
}
//不管怎么着,最后都关闭文件
deferfile.Close()
//从文件创建一个bufferreader
br:=bufio.NewReader(file)
//初始化一个数组切片
result=make([]int,0)
//死循环
for{
//一行一行的读
line,isPrefix,err2:=br.ReadLine()
ifnil!=err2{
//读到文件结尾
ifio.EOF==err2{
fmt.Println("finishread...")
}
return
}
ifisPrefix{
break
}
//将字符数组转化成字符串
str:=string(line)
//将字符串转化成int
value,err3:=strconv.Atoi(str)
ifnil!=err3{
err=err3
break
}
//像切片中追加
result=append(result,value)
}
//返回结果
return
}
原文链接:https://www.f2er.com/go/190752.html