Go 读取文件,块读取 Read(),行读取 ReadBytes('\n')

野性酷女 2022-03-06 19:04 325阅读 0赞

demo.go(读取文件,块读取 Read()):

  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "os"
  6. )
  7. func main() {
  8. // 打开文件
  9. fp, err := os.Open("./demo.txt") // os.Open() 只读方式打开
  10. if err != nil {
  11. fmt.Println("打开文件失败。", err)
  12. return
  13. }
  14. defer fp.Close()
  15. buf := make([]byte, 1024)
  16. // 读取文件 (块读取)
  17. //count, _ := fp.Read(buf) // count表示读取出来的有效字符(byte)数
  18. //fmt.Println(string(buf[:count]))
  19. for {
  20. // 循环读取文件
  21. n, err2 := fp.Read(buf)
  22. if err2 == io.EOF { // io.EOF表示文件末尾
  23. fmt.Println("文件读取结束")
  24. break
  25. }
  26. fmt.Print(string(buf[:n]))
  27. }
  28. }

demo.go(读取文件,行读取 ReadBytes(‘\n’)):

  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8. func main() {
  9. // 打开文件
  10. fp, err := os.OpenFile("./demo.txt", os.O_RDONLY, 6)
  11. if err != nil {
  12. fmt.Println("打开文件失败。", err)
  13. return
  14. }
  15. defer fp.Close()
  16. // 创建文件的缓存区
  17. r := bufio.NewReader(fp)
  18. for {
  19. // 读取文件 (行读取) ReadBytes('\n')
  20. slice, err2 := r.ReadBytes('\n') // '\n'表示按行读取。 ','表示按英文逗号读取。
  21. fmt.Print(string(slice)) // 先打印,再判断err2 (如果文件末尾没有'\n',那么需要先打印再判断err2)
  22. if err2 == io.EOF { // 如果读取到文件末尾
  23. break
  24. }
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读