(18条消息) Go语言自学系列 | golang标准库os模块 - File文件读操作_COCOgsta的博客-CSDN博客_golang os.file



Go语言自学系列 | golang标准库os模块 - File文件读操作

COCOgsta 已于 2022-04-09 20:57:09 修改 81 收藏
分类专栏: 视频学习笔记 文章标签: golang go

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


这里结束和File结构体相关的文件读操作

  1. 1
    package main
  2. 2
  3. 3
    import (
  4. 4
    "fmt"
  5. 5
    "os"
  6. 6
    )
  7. 7
  8. 8
    // 打开关闭文件
  9. 9
    func openCloseFile() {
  10. 10
    // 只能读
  11. 11
    f, _ := os.Open("a.txt")
  12. 12
    fmt.Printf("f.Name(): %v\n", f.Name())
  13. 13
    // 根据第二个参数 可以读写或者创建
  14. 14
    f2, _ := os.OpenFile("a1.txt", os.O_RDWR|os.O_CREATE, 0755)
  15. 15
    fmt.Printf("f2.Name(): %v\n", f2.Name())
  16. 16
  17. 17
    err := f.Close()
  18. 18
    fmt.Printf("err: %v\n", err)
  19. 19
    err2 := f2.Close()
  20. 20
    fmt.Printf("err2: %v\n", err2)
  21. 21
    }
  22. 22
  23. 23
    // 创建文件
  24. 24
    func createFile() {
  25. 25
    // 等价于:OpenFile(name, O_RDWF|O_CREATE|O_TRUNK, 0666)
  26. 26
    f, _ := os.Create("a2.txt")
  27. 27
    fmt.Printf("f.Name(): %v\n", f.Name())
  28. 28
    // 第一个参数 目录默认:Temp 第二个参数 文件名前缀
  29. 29
    f2, _ := os.CreateTemp("", "temp")
  30. 30
    fmt.Printf("f2.Name(): %v\n", f2.Name())
  31. 31
    }
  32. 32
  33. 33
    // 读操作
  34. 34
    func readOps() {
  35. 35
    // 循环读取
  36. 36
    /* f, _ := os.Open("a.txt")
  37. 37
    for {
  38. 38
    buf := make([]byte, 6)
  39. 39
    n, err := f.Read(buf)
  40. 40
    fmt.Printf("string(buf): %v\n", string(buf))
  41. 41
    fmt.Printf("n: %v\n", n)
  42. 42
    if err == io.EOF {
  43. 43
    break
  44. 44
    }
  45. 45
    }
  46. 46
    f.Close() */
  47. 47
  48. 48
    /* buf := make([]byte, 10)
  49. 49
    f2, _ := os.Open("a.txt")
  50. 50
    // 从5开始读10个字节
  51. 51
    n, _ := f2.ReadAt(buf, 5)
  52. 52
    fmt.Printf("n: %v\n", n)
  53. 53
    fmt.Printf("string(buf): %v\n", string(buf))
  54. 54
    f2.Close() */
  55. 55
  56. 56
    // 测试 a目录下有b和c目录
  57. 57
    /* f, _ := os.Open("a")
  58. 58
    de, _ := f.ReadDir(-1)
  59. 59
    for _, v := range de {
  60. 60
    fmt.Printf("v.IsDir(): %v\n", v.IsDir())
  61. 61
    fmt.Printf("v.Name(): %v\n", v.Name())
  62. 62
    } */
  63. 63
  64. 64
    // 定位
  65. 65
    f, _ := os.Open("a.txt")
  66. 66
    f.Seek(3, 0)
  67. 67
    buf := make([]byte, 10)
  68. 68
    n, _ := f.Read(buf)
  69. 69
    fmt.Printf("n: %v\n", n)
  70. 70
    fmt.Printf("string(buf): %v\n", string(buf))
  71. 71
    f.Close()
  72. 72
    }
  73. 73
  74. 74
    func main() {
  75. 75
    // openCloseFile()
  76. 76
    // createFile()
  77. 77
    readOps()
  78. 78
    }


yg9538 2022年7月22日 22:48 282 收藏文档