前端之家收集整理的这篇文章主要介绍了
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
- }