【GO】关于读取文件时少了最后一行问题

简介: 【GO】关于读取文件时少了最后一行问题

问题


使用这个方法实现会发现,最后一行的数据没有了。于是更改一下方案。


这个方案是根据教程撸的,但是出现了问题,先知道下面的解决方案。这个问题在后边探讨。现在没有实际的应用环境,也摸不到问题的点出现在哪


其实在学习的过程中,我们没有必要纠结一个点,咔咔的经验是,除非当日工作需要是不会对一个难点进行死磕的。慢慢的根据自己的知识提升会有更好的方案取而代之,或者问题的解决思路

func main() {
  file, e := os.OpenFile("D:/kaka.txt", os.O_RDONLY, 0666)
  if e != nil {
    fmt.Println("文件打开失败:err", e)
    return
  } else {
    fmt.Println("文件打开成功")
  }
  // 打开时立刻挂起关闭程序
  defer func() {
    file.Close()
    fmt.Println("文件关闭成功")
  }()
  // 创建文件的读取器
  reader := bufio.NewReader(file)
  // 死循环读取
  for {
    // 以换行符为界,分批次读取数据,得到readString
    readString, e := reader.ReadString('\n')
    //line, _, e := reader.ReadLine()
    if e != nil {
      fmt.Println("文件读取失败;err", e)
      // 如果已到文件末尾,则直接结束
      if e == io.EOF {
        time.Sleep(time.Second)
        break
      }
    }
    fmt.Print(readString)
    //fmt.Println(string(line))
  }
  fmt.Println("读取结束")
}

更改

直接调用接口实现

屏幕快照 2022-05-18 下午8.25.01.png

屏幕快照 2022-05-18 下午8.25.15.png

/**
关于文件读取少了一行的另一种解决方案
*/
func main() {
  file, e := os.Open("d:/kaka.txt")
  if e != nil {
    fmt.Println("文件打开失败")
  } else {
    fmt.Println("文件打开成功")
    // 创建文件读取器
    reader := bufio.NewScanner(file)
    for reader.Scan() {
      fmt.Println(reader.Text())
    }
  }
}
相关文章
|
5月前
|
Go API
一文搞懂Go读写Excel文件
一文搞懂Go读写Excel文件
147 0
|
11月前
|
Go 区块链
go 编译 自定义 图标 ico文件
go 编译 自定义 图标 ico文件
81 0
|
Java 测试技术 Go
Go测试之.golden 文件
Go测试之.golden 文件
95 0
|
2月前
|
XML 设计模式 JSON
Go - 关于 proto 文件的一点小思考?
Go - 关于 proto 文件的一点小思考?
34 0
|
4月前
|
JavaScript
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
|
4月前
|
监控 Go
go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件
go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件
|
4月前
|
存储 监控 算法
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
|
4月前
|
Go
Go语言进阶篇——文件
Go语言进阶篇——文件
|
5月前
|
安全 Go
Golang深入浅出之-Go语言标准库中的文件读写:io/ioutil包
【4月更文挑战第27天】Go语言的`io/ioutil`包提供简单文件读写,适合小文件操作。本文聚焦`ReadFile`和`WriteFile`函数,讨论错误处理、文件权限、大文件处理和编码问题。避免错误的关键在于检查错误、设置合适权限、采用流式读写及处理编码。遵循这些最佳实践能提升代码稳定性。
58 0
|
5月前
|
存储 测试技术 Go
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
下一篇
无影云桌面