• GO中的文件操作


    1.文件的读取

    1.1 通过os.open方法读取文件

    1. func main() {
    2. // 读取文件 方法1
    3. file, err := os.Open("./main/test.txt")
    4. // 关闭文件流
    5. defer file.Close();
    6. if err != nil {
    7. fmt.Println("打开文件出错")
    8. }
    9. // 读取文件里面的内容
    10. var tempSlice = make([]byte, 1024)
    11. var strSlice []byte
    12. for {
    13. n, err := file.Read(tempSlice)
    14. if err == io.EOF {
    15. fmt.Printf("读取完毕")
    16. break
    17. }
    18. fmt.Printf("读取到了%v 个字节 \n", n)
    19. strSlice := append(strSlice, tempSlice...)
    20. fmt.Println(string(strSlice))
    21. }
    22. }

    1.2 通过bufio的方式读取

    1. func main() {
    2. // 读取文件 方法2
    3. file, err := os.Open("./main/test.txt")
    4. // 关闭文件流
    5. defer file.Close();
    6. if err != nil {
    7. fmt.Println("打开文件出错")
    8. }
    9. // 通过创建bufio来读取
    10. reader := bufio.NewReader(file)
    11. var fileStr string
    12. var count int = 0
    13. for {
    14. // 相当于读取一行
    15. str, err := reader.ReadString('\n')
    16. if err == io.EOF {
    17. // 读取完成的时候,也会有内容
    18. fileStr += str
    19. fmt.Println("读取结束", count)
    20. break
    21. }
    22. if err != nil {
    23. fmt.Println(err)
    24. break
    25. }
    26. count ++
    27. fileStr += str
    28. }
    29. fmt.Println(fileStr)
    30. }

    1.3 通过ioutil读取

    文件比较少的时候,可以通过ioutil来读取文件

    1. // 通过IOUtil读取
    2. byteStr, _ := ioutil.ReadFile("./main/test.txt")
    3. fmt.Println(string(byteStr))

    2. 文件的写入

    文件的写入,我们首先需要通过 os.OpenFile打开文件

    1. // 打开文件
    2. file, _ := os.OpenFile("./main/test.txt", os.O_CREATE | os.O_RDWR, 777)
    1. name:要打开的文件名
    2. flag:打开文件的模式
    3. os.O_WRONLY:只读
    4. os.O_CREATE:创建
    5. os.O_RDONLY:只读
    6. os.O_RDWR:读写
    7. os.O_TRUNC:清空
    8. os.O_APPEND:追加
    9. perm:文件权限,一个八进制数,r(读)04,w(写)02,x(执行)01

    2.1 通过openfile 打开文件写入

    1. // 打开文件
    2. file, _ := os.OpenFile("./main/test.txt", os.O_CREATE | os.O_RDWR | os.O_APPEND, 777)
    3. defer file.Close()
    4. str := "啦啦啦 \r\n"
    5. file.WriteString(str)

    2.2 通过bufio写入

    1. // 打开文件
    2. file, _ := os.OpenFile("./main/test.txt", os.O_CREATE | os.O_RDWR | os.O_APPEND, 777)
    3. defer file.Close()
    4. str := "啦啦啦 \r\n"
    5. file.WriteString(str)
    6. // 通过bufio写入
    7. writer := bufio.NewWriter(file)
    8. // 先将数据写入缓存
    9. writer.WriteString("你好,我是通过writer写入的 \r\n")
    10. // 将缓存中的内容写入文件
    11. writer.Flush()

    2.3 通过iouti写入

    1. // 第三种方式,通过ioutil
    2. str2 := "hello"
    3. ioutil.WriteFile("./main/test.txt", []byte(str2), 777)

    3. 文件复制

    1. // 读取文件
    2. byteStr, err := ioutil.ReadFile("./main/test.txt")
    3. if err != nil {
    4. fmt.Println("读取文件出错")
    5. return
    6. }
    7. // 写入指定的文件
    8. ioutil.WriteFile("./main/test2.txt", byteStr, 777)

    4.创建目录

    os.Mkdir("./abc", 777)
    

    5.删除文件

    1. // 删除文件
    2. os.Remove("aaa.txt")
    3. // 删除目录
    4. os.Remove("./aaa")
    5. // 删除多个文件和目录
    6. os.RemoveAll("./aaa")

    6.重命名

    os.Rename("")
    

  • 相关阅读:
    Python学习笔记--类的访问控制
    centos7安装confluence7.16.5
    文献阅读01_基于深度学习的个性化新闻推荐方法研究_20221114
    App移动端测试(6)—— 应用程序(apk)包管理与activity
    Linux之进度条
    Win11怎么添加日语输入法
    axios 基本使用与学习
    Android入门第6天-RelativeLayout
    HarmonyOS开发(四):UIAbility组件
    Kafka 多种跨 IDC 灾备方案调研对比
  • 原文地址:https://blog.csdn.net/weixin_69039908/article/details/143378784