go 文件操作

╰半橙微兮° 2022-06-04 02:16 373阅读 0赞

Golang简单写文件操作的四种方法

  1. package main
  2. import (
  3. "os"
  4. "io"
  5. "io/ioutil"
  6. "fmt"
  7. "bufio"
  8. )
  9. var filename = "./output1.txt"
  10. var f *os.File
  11. var err1 error
  12. /**
  13. 创建文件夹
  14. */
  15. func mkDir(descname string) error {
  16. return os.Mkdir(descname, os.ModeDir)
  17. }
  18. /**
  19. * 判断文件是否存在 存在返回 true 不存在返回false
  20. */
  21. func checkFileIsExist(filename string) (bool) {
  22. var exist = true
  23. if _, err := os.Stat(filename); os.IsNotExist(err) {
  24. exist = false
  25. }
  26. return exist
  27. }
  28. /**
  29. 第一种方式: 使用 io.WriteString 写入文件
  30. */
  31. func write_io_WriteString() {
  32. if checkFileIsExist(filename) {
  33. // 如果文件存在,则只打开文件
  34. f, err1 = os.OpenFile(filename, os.O_APPEND | os.O_RDWR, 0666) // os.O_APPEND | os.O_RDWR 既有读写也有append属性
  35. } else {
  36. f, err1 = os.Create(filename)
  37. }
  38. check(err1)
  39. io.WriteString(f, "第一个:\n")
  40. f.Sync()
  41. //f.Close()
  42. }
  43. /**
  44. 第二种方式: 使用 ioutil.WriteFile 写入文件
  45. */
  46. func write_iouit_writeFIle() {
  47. var bt = []byte("第二个:\n")
  48. // 会覆盖掉文件原内容
  49. err2 := ioutil.WriteFile(filename, bt, 0666)
  50. check(err2)
  51. }
  52. /**
  53. 第三种方式: 使用 File(Write,WriteString) 写入文件
  54. */
  55. func write_File() {
  56. var bt = []byte("第三个:\n")
  57. f, err3 := os.OpenFile(filename, os.O_APPEND | os.O_RDWR, 0666) //创建文件
  58. check(err3)
  59. defer f.Close()
  60. c, err3 := f.Write(bt) //写入文件(字节数组)
  61. fmt.Printf(string(c))
  62. check(err3)
  63. f.Sync()
  64. f.Close()
  65. }
  66. /**
  67. 第四种方式: 使用 bufio.NewWriter 写入文件
  68. */
  69. func write_bufio_write() {
  70. w := bufio.NewWriter(f) //创建新的 Writer 对象
  71. n4, err3 := w.WriteString("第四个:\n")
  72. fmt.Printf("写入 %d 个字节n", n4)
  73. w.Flush()
  74. check(err3)
  75. f.Sync()
  76. f.Close()
  77. }
  78. func main() {
  79. //e := mkDir("sff")
  80. //check(e)
  81. write_io_WriteString()
  82. //write_iouit_writeFIle()
  83. write_File()
  84. write_bufio_write()
  85. }
  86. func check(e error) {
  87. if e != nil {
  88. panic(e)
  89. }
  90. }

发表评论

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

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

相关阅读

    相关 go 操作数据库

    go 操作数据库需要下载各个数据库的驱动下面以关系型数据库mysql 和非关系型数据库redis 为例子讲解一下go 如何与数据库交互 下载数据库驱动 mysql :