小工具知识网

当前位置: 首页 > 行业知识 > go语言基础 -- 文件操作

行业知识

go语言基础 -- 文件操作

2026-11-06 09:59:52 来源:互联网转载

基础的文件操作方法

go���面的文件操作封装在os包里面的File结构体中,要用的时候最好去查下官方文档,这里介绍下基本的文件操作。

  1. 打开关闭文件
import(    "os")func main() {    // Open返回*File指针,后续的操作都通过*File对象操作    file, err := os.Open("/home/lzs/tmp.txt")    if err != nil {        // ...    }    err = file.Close()    if err != nil {        // ...    }}
  1. 带缓冲读取文件 – bufio包的reader方法
import(    "fmt"    "os")func main() {    // Open返回*File指针,后续的操作都通过*File对象操作    file, err := os.Open("/home/lzs/tmp.txt")    if err != nil {        // ...    }    // reader默认缓冲区大小为4096    reader := bufio.NewReader(file)    for {        // 读取到\n就结束这次读取        str, err := reader.ReadString('\n')        if err == io.EOF {            break        }        fmt.Print(str)    }    defer file.Close()}
  1. 一次性读取文件 – ioutil包的相关函数方法

    文件不大时推荐使用ioutil包的函数一次性读取文件

    使用ioutil下的ReadFile函数可一次性读取文件,无需显式地打开关闭文件。

import(    "fmt"    "io/ioutil")func main() {    file := "/home/test/file.txt"    content_slice, err := ioutil.ReadFile(file)    if err != nil {        // ...    }    fmt.Printf("read file ok")}
  1. 创建及写文件

    这里我们会用到os包里面的OpenFile函数,name是文件名,flag是打开模式,perm是权限设置

    flag的取值有以下这些

    perm的取值和linux权限控制一样,r是4,w是2,x是1,如果对所有用户和组都开放,那么就是0777

import(    "fmt"    "os"    "bufio")func main() {    filepath := "./test.txt"    file, err := os.OpenFile(filepath, os.O_WRONLY | os.O_CREATE, 0666)    if err != nil {        fmt.Printf("open file error:%v", err)        return    }    defer file.Close()    str := "test write"    // 使用缓冲写    writer := bufio.NewWriter(file)    // 注意,这一步只是写到缓冲区,除非缓冲区满,不然不会写入硬盘    writer.WriteString(str)    // 落盘    writer.Flush()}
  1. 判断文件是否存在

    go中使用os.Stat()判断文件或文件夹是否存在

  • 如果返回的错误为nil,则存在
  • 如果返回错误值使用os.IsNotExist()判断为true,则不存在
  • 其他返回类型不确定
    1. 文件拷贝

      使用io包的Copy()

      这个函数的参数需要使用bufio包的方法来创建writer和reader。

上一篇:ai服务器是怎么散热的?

下一篇:服务器怎么进bios界面?