Go语言学习笔记之文件读写操作详解

 更新时间:2022年05月24日 10:33:05   作者:剑客阿良_ALiang  
这篇文章主要为大家详细介绍了Go语言对文件进行读写操作的方法,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的可以参考一下

文件操作比较多,分为几篇来写吧。首先是文件的读写,在平时的工程化操作中使用最多。

文件写

样例代码如下

package main
 
import (
    "bufio"
    "fmt"
    "io"
    "os"
)
 
//写文件
func DoWriteFile() error {
    _filePath := "./test.txt"
    _file, _err := os.OpenFile(_filePath, os.O_WRONLY|os.O_CREATE, 0666)
    if _err != nil {
        fmt.Printf("打开文件错误=%v\n", _err)
        return _err
    }
    //提前关闭文件
    defer _file.Close()
    //写入文件
    _writer := bufio.NewWriter(_file)
    _writer.WriteString("hahaha!\n")
    _writer.Flush()
    return nil
}
 
 
func main() {
    DoWriteFile()
}

这里使用了os.OpenFile方法,后面的os.O_WRONLY模式会在后面提到。

执行结果

文件读

样例代码如下

package main
 
import (
    "bufio"
    "fmt"
    "io"
    "os"
)
 
//读文件
func DoReadFile() error {
    _filePath := "./test.txt"
    _file, _err := os.Open(_filePath)
    if _err != nil {
        fmt.Printf("打开文件错误=%v\n", _err)
        return _err
    }
    defer _file.Close()
    _reader := bufio.NewReader(_file)
    for true {
        str, err := _reader.ReadString('\n')
        if err == io.EOF {
            break
        }
        fmt.Println(str)
    }
    return _err
}
 
func main() {
    DoReadFile()
}

执行结果如下

hahaha!

Process finished with the exit code 0

注意,os.Open方法是以只读模式打开文件。

小结

在使用os.OpenFile方法的时候需要使用到文件模式,文件的打开模式如下:

O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件

O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件

O_RDWR int = syscall.O_RDWR // 读写模式打开文件

O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部

O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件

O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在

O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O

O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件

到此这篇关于Go语言学习笔记之文件读写操作详解的文章就介绍到这了,更多相关Go语言文件读写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 通过与Java功能上的对比来学习Go语言

    通过与Java功能上的对比来学习Go语言

    这篇文章主要介绍了通过与Java功能上的对比来学习Go语言的相关资料,需要的朋友可以参考下
    2023-02-02
  • go mod 使用私有gitlab群组的解决方案

    go mod 使用私有gitlab群组的解决方案

    这篇文章主要介绍了go mod 使用私有gitlab群组的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • go tool pprof 参数 '-base' 和 '-diff_base'之间的区别解析

    go tool pprof 参数 '-base' 和 '-diff_base&

    这篇文章主要介绍了go tool pprof 参数 '-base' 和 '-diff_base'之间的区别,两个参数都是用于计算当前 profile文件减去基准profile文件所获得的差值,用这个差值生成一个新的profile文件,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • golang操作rocketmq的示例代码

    golang操作rocketmq的示例代码

    这篇文章主要介绍了golang操作rocketmq的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 一文详解Go语言中切片的底层原理

    一文详解Go语言中切片的底层原理

    在Go语言中,切片作为一种引用类型数据,相对数组而言是一种动态长度的数据类型,使用的场景也是非常多,所以本文主要来和大家聊聊切片的底层原理,需要的可以参考一下
    2023-06-06
  • Go语言怎么使用变长参数函数

    Go语言怎么使用变长参数函数

    本文主要介绍了Go语言怎么使用变长参数函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • golang简易令牌桶算法实现代码

    golang简易令牌桶算法实现代码

    这篇文章主要介绍了golang简易令牌桶算法实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Go语言Zap库Logger的定制化和封装使用详解

    Go语言Zap库Logger的定制化和封装使用详解

    这篇文章主要介绍了Go语言Zap库Logger的定制化和封装使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang操作命令行的几种方式总结

    Golang操作命令行的几种方式总结

    这篇文章主要介绍了Golang操作命令行的几种方式总结,文章通过围主题思想展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Go引用github包的详细流程步骤

    Go引用github包的详细流程步骤

    这篇文章主要给大家介绍了关于Go引用github包的详细流程步骤,文中通过图文介绍的非常详细,对大家学习或者使用Go具有一定的参考价值,需要的朋友可以参考下
    2024-02-02

最新评论