• 技术文章 >后端开发 >Golang

    golang怎么关闭文件

    青灯夜游青灯夜游2022-12-19 11:16:50原创1357

    在golang中,可以使用Close()函数来关闭文件。Close()函数用于关闭一个打开的文件,语法“func (file *File) Close() error”,参数“file”表示打开的文件;如果打开失败则返回错误信息,否则返回nil。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    在 Golang 中,我们需要操作 文件,那么首先我们就必须要打开文件,打开文件操作完毕后,还需要关闭文件,如果只打开文件,不关闭文件,会造成系统资源的浪费。

    在 Golang 中,打开文件使用 Open 函数,关闭文件使用 Close 函数,打开文件、关闭文件以及大多数文件操作都涉及到一个很重要的 os.File 结构体。

    Go语言os.File结构体

    语法

    type File struct {
    *file // os specific
    }
    type file struct {
    pfd        poll.FD
    name       string
    dirinfo    *dirInfo // nil unless directory being read
    appendMode bool     // whether file is opened for appending
    }

    说明

    我们看到,os.File 结构体里面包含了一个 file 指针,file 指针结构体中有四个成员,分别为:

    成员变量描述
    pfd是一个 FD 结构体类型,是一个文件的唯一标志,每一个被打开的文件在操作系统中,都会有一个文件标志符,来唯一标识一个文件,就是这里的 pfd。
    name文件名。
    dirinfo文件的路径信息,也是一个结构体。
    appendMode是一个 bool 类型,表明该文件是否可以被追加写入内容。

    Go语言close函数--关闭文件

    语法

    func (file *File) Close() error

    参数

    返回值

    说明

    使用 File 指针来调用 Close 函数,如果关闭失败会返回 error 错误信息。

    案例

    打开和关闭文件

    使用 Open 函数打开文件,使用 Close 函数关闭文件

    package main
    import (
    	"fmt"
    	"os"
    )
    func main() {
    	fileName := "C:/haicoder.txt"
    	file, err := os.Open(fileName)
    	if err != nil{
    		fmt.Println("Open file err =", err)
    		return
    	}
    	fmt.Println("Open file success")
    	if err := file.Close(); err != nil{
    		fmt.Println("Close file err =", err)
    		return
    	}
    	fmt.Println("Close file success")
    }

    1.png

    我们使用 os.Open 打开了 “C:/haicoder.txt” 文件,因为这个文件是存在的,所以打开和关闭文件都成功,这里调用关闭文件是调用的 os.Open 返回的 File 指针来关闭的。

    接着,我们删除 “C:/haicoder.txt” 文件,再一次运行程序,程序输出如下:

    2.png

    我们删除文件后,我们看到,再次打开文件,程序报错,因为文件不存在。

    更多编程相关知识,请访问:编程视频!!

    以上就是golang怎么关闭文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Golang
    上一篇:golang怎么实现文件锁 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • golang数组怎么删除元素• golang map怎么删除元素• golang注释有几种• golang支持同名方法吗• 一文详解Golang中的反射
    1/1

    PHP中文网