Golang 文件不存在就创建
在进行文件操作时,有时候需要判断文件是否存在,如果不存在则创建新文件。本文将详细介绍如何使用Golang来实现这一功能。
使用os包进行文件操作
Golang提供了os包来进行文件操作,通过这个包我们可以对文件进行各种操作,包括创建、删除、读写等。在使用os包之前,需要先导入它:
import "os"
判断文件是否存在
在Golang中,判断文件是否存在可以使用os.Stat函数,如果文件存在则返回文件信息,否则返回错误信息:
func fileExists(filename string) bool {
_, err := os.Stat(filename)
if os.IsNotExist(err) {
return false
}
return true
}
上面的代码定义了一个函数fileExists,接受一个文件名作为参数,如果文件存在则返回true,否则返回false。
创建文件
使用os.Create函数可以创建一个新文件,如果文件已存在则会被覆盖,如果文件不存在则会创建新文件:
func createFile(filename string) error {
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
return nil
}
上面的代码定义了一个函数createFile,接受一个文件名作为参数,成功创建文件则返回nil,否则返回错误信息。
判断文件并创建
结合前面的两个函数,我们可以编写一个函数来判断文件是否存在,如果不存在则创建新文件:
func checkAndCreateFile(filename string) error {
if !fileExists(filename) {
return createFile(filename)
}
return nil
}
上面的代码定义了一个函数checkAndCreateFile,接受一个文件名作为参数,如果文件不存在则创建新文件。
示例代码
下面是一个完整的示例代码,演示了如何使用Golang判断文件是否存在,如果不存在则创建新文件:
package main
import (
"fmt"
"os"
)
func fileExists(filename string) bool {
_, err := os.Stat(filename)
if os.IsNotExist(err) {
return false
}
return true
}
func createFile(filename string) error {
file, err := os.Create(filename)
if err != nil {
return err
}
defer file.Close()
return nil
}
func checkAndCreateFile(filename string) error {
if !fileExists(filename) {
return createFile(filename)
}
return nil
}
func main() {
filename := "test.txt"
err := checkAndCreateFile(filename)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("File created successfully!")
}
运行结果
运行上面的示例代码,如果当前目录下不存在test.txt文件,则会创建新文件,并输出”File created successfully!”,否则不会创建新文件。
小结
通过使用os包,我们可以轻松地判断文件是否存在,如果不存在则创建新文件。