go读文件操作实战

偏执的太偏执、 2021-07-24 15:46 558阅读 0赞

一 实战1

1 需求

读取文件的内容并显示在终端(带缓冲区的方式),使用 os.Open, file.Close, bufio.NewReader(),reader.ReadString 函数和方法。

2 代码

  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8. func main() {
  9. // 打开文件
  10. // 概念说明: file 的叫法
  11. // 1 file 叫 file 对象
  12. // 2 file 叫 file 指针
  13. // 3 file 叫 file 文件句柄
  14. file, err := os.Open("d:/test.txt")
  15. if err != nil {
  16. fmt.Println("open file err=", err)
  17. }
  18. // 当函数退出时,要及时的关闭file
  19. defer file.Close() // 要及时关闭file句柄,否则会有内存泄漏.
  20. /*
  21. const (
  22. defaultBufSize = 4096 // 默认的缓冲区为 4096
  23. )
  24. */
  25. // 创建一个 *Reader ,是带缓冲的
  26. reader := bufio.NewReader(file)
  27. // 循环的读取文件的内容
  28. for {
  29. str, err := reader.ReadString('\n') // 读到一个换行就结束
  30. if err == io.EOF { // io.EOF表示文件的末尾
  31. break
  32. }
  33. // 输出内容
  34. fmt.Printf(str)
  35. }
  36. fmt.Println("文件读取结束...")
  37. }

3 测试

123

2354

534

文件读取结束…

二 实战2

1 需求

读取文件的内容并显示在终端(使用 ioutil 一次将整个文件读入到内存中),这种方式适用于文件不大的情况。相关方法和函数(ioutil.ReadFile)。

2 代码

  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. )
  6. func main() {
  7. // 使用 ioutil.ReadFile 一次性将文件读取到位
  8. file := "d:/test.txt"
  9. content, err := ioutil.ReadFile(file)
  10. if err != nil {
  11. fmt.Printf("read file err=%v", err)
  12. }
  13. // 把读取到的内容显示到终端
  14. fmt.Printf("%v\n", content) // []byte
  15. fmt.Printf("%v", string(content)) // 转为string
  16. // 我们没有显式的 Open 文件,因此也不需要显式的 Close 文件。因为,文件的 Open 和 Close 被封装到 ReadFile 函数内部。
  17. }

3 测试

[49 50 51 13 10 50 51 53 52 13 10 53 51 52 13 10]

123

2354

534

发表评论

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

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

相关阅读

    相关 go语言文件文件

    文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。 打开和关闭文件 `os.Open()`函数能够打开一个文件,返