golang学习的点点滴滴:读写文件(面向过程版)

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

猜你在找的Go相关文章