【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 下午7.50.30.png



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

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

package main
import "fmt"
/**
首先我们需要明确一个概念那就是什么是面向对象
面向对象简称OOP,是一种计算机编程架构,使用面向对象编程可以实现代码的重用性,灵活性,扩展性。
面向对象符合人类看待事物的一般规律。使其代码更简洁,更容易维护,并且具有更强的重用性
在PHP中面向对象的三大特性:封装、继承、多态
当然在go中也是一样的
在PHP中我们有类  但是在go使用的是结构体
*/
type Person struct {
  name string
  age  int
  like []string
}
func main() {
  // 创建对象并通过对象的指针去访问对象的属性和方法
  person := &Person{name: "咔咔", age: 24}
  // {咔咔 24 []}
  fmt.Println(*person)
  // 咔咔
  fmt.Println(person.name)
  // 24
  fmt.Println(person.age)
  // 咔咔博客地址:blog.fangkang.top
  person.eat()
  // 咔咔手赚网地址:fangkang.top
  person.play()
}
/**
无论方法的主语定义为指针还是值都是可以正常访问的
但是一般情况下我们都会把方法的主语定义为指针  因为传值的话是一个副本  指针是一个地址  这样在方法里边改变了属性的值 那么是通过这个地址去改变的
*/
func (p *Person) eat() {
  fmt.Println("咔咔博客地址:blog.fangkang.top")
}
func (p *Person) play() {
  fmt.Println("咔咔手赚网地址:fangkang.top")
}
相关文章
|
6天前
|
Go
Go to Learn Go之文件操作
Go to Learn Go之文件操作
16 8
|
Go
Go 删除文件方式
Go 删除文件方式
112 0
|
5月前
|
Go
Go 文件操作相关方法
Go 文件操作相关方法
47 0
|
存储 算法 Java
Go源代码解析-slice.go文件
Go源代码解析-slice.go文件
76 0
|
存储 安全 算法
Go源代码解析-sema.go文件
Go源代码解析-sema.go文件
70 0
|
存储 缓存 监控
Go源码之netpoll.go文件详解
Go源码之netpoll.go文件详解
197 0
|
存储 Go
一文掌握 Go 文件的读取操作
哈喽大家好,我是陈明勇,本文分享的知识是 Go 文件的读取操作。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
152 1
一文掌握 Go 文件的读取操作
|
缓存 Go
一文掌握 Go 文件的写入操作
本文先是对 File.Write、File.WriteString、File.WriteAt 进行介绍,通过例子演示它们的使用方式;然后介绍 File.Seek,说明了它的用法;最后引出 bufio.NewWriter、Writer.WriteString、Writer.Flush,使用它们代替 File 结构体里的写入方法,可以不用频繁操作磁盘,提高写入效率。
295 1
一文掌握 Go 文件的写入操作
|
Go 数据格式
Go标准库 log | 文件操作 | strconv
Go标准库 log | 文件操作 | strconv
Go---Go语言中创建文本文档出现read-only上锁情况
Go---Go语言中创建文本文档出现read-only上锁情况
Go---Go语言中创建文本文档出现read-only上锁情况
下一篇
无影云桌面