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

前端之家收集整理的这篇文章主要介绍了golang学习的点点滴滴:读写文件(面向过程版)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. packagemain
  2. import(
  3. "fmt"
  4. "bufio"
  5. "io"
  6. "os"
  7. "flag"
  8. "strconv"
  9. )
  10.  
  11. //使用命令行-in默认为infile
  12. varin*string=flag.String("in","infile","inputfilename...")
  13. varout*string=flag.String("out","outfile","outputfilename...")
  14.  
  15. funcmain(){
  16. //解析命令行
  17. flag.Parse()
  18.  
  19. deferfunc(){
  20. //如果发现异常...
  21. ifex:=recover();nil!=ex{
  22. fmt.Println(ex)
  23. }
  24. }()
  25.  
  26. value,err:=read()
  27. ifnil!=err{
  28. //抛出异常
  29. panic(err)
  30. }
  31.  
  32. write(value)
  33. }
  34.  
  35. funcwrite(value[]int)(errerror){
  36. //创建文件
  37. file,err2:=os.Create(*out)
  38. ifnil!=err2{
  39. err=err2
  40. fmt.Println("errortocreatefile...")
  41. return
  42. }
  43.  
  44. //不管怎么着,最后都关闭文件
  45. deferfile.Close()
  46.  
  47. for_,res:=rangevalue{
  48. //将int类型转化成string
  49. str:=strconv.Itoa(res+2)
  50. //将string写入file中
  51. file.WriteString(str+"\n")
  52. }
  53.  
  54. returnnil
  55. }
  56.  
  57. funcread()(result[]int,errerror){
  58. //打开文件
  59. file,err1:=os.Open(*in)
  60.  
  61. ifnil!=err1{
  62. err=err1
  63. return
  64. }
  65.  
  66. //不管怎么着,最后都关闭文件
  67. deferfile.Close()
  68.  
  69. //从文件创建一个bufferreader
  70. br:=bufio.NewReader(file)
  71. //初始化一个数组切片
  72. result=make([]int,0)
  73.  
  74. //死循环
  75. for{
  76.  
  77. //一行一行的读
  78. line,isPrefix,err2:=br.ReadLine()
  79.  
  80. ifnil!=err2{
  81. //读到文件结尾
  82. ifio.EOF==err2{
  83. fmt.Println("finishread...")
  84. }
  85. return
  86. }
  87.  
  88. ifisPrefix{
  89. break
  90. }
  91.  
  92. //将字符数组转化成字符串
  93. str:=string(line)
  94. //将字符串转化成int
  95. value,err3:=strconv.Atoi(str)
  96.  
  97. ifnil!=err3{
  98. err=err3
  99. break
  100. }
  101.  
  102. //像切片中追加
  103. result=append(result,value)
  104. }
  105.  
  106. //返回结果
  107. return
  108. }

猜你在找的Go相关文章