Go语言打开关闭文件

Go语言打开关闭文件教程

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语言open函数

语法

func Open(name string) (*File, error)

参数

参数 描述
name 文件名。

返回值

返回值 描述
File 打开的文件句柄。
error 如果打开失败,则返回错误信息,否则,返回 nil。

说明

Open 函数接受一个 字符串 类型的文件名做为 参数,如果打开成功,则返回一个 File 结构体的指针,否则就返回 error 错误信息。

Go语言close函数

语法

func (file *File) Close() error

参数

参数 描述
file 打开的文件。

返回值

返回值 描述
error 如果打开失败,则返回错误信息,否则,返回 nil。

说明

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

案例

打开关闭文件

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

package main import ( "fmt" "os" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") 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") }

程序运行后,控制台输出如下:

01_golang打开关闭文件.png

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

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

02_golang打开关闭文件.png

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

Go语言打开关闭文件教程总结

Go 语言 open 函数语法:

func Open(name string) (*File, error)

Go 语言 close 函数语法:

func (file *File) Close() error