Golang 文件操作:判断文件是否存在并创建文件,以及如何创建目录
在 Go 语言中,os.Create 函数只会创建文件,而不会创建目录。如果目录不存在,os.Create 函数会返回一个错误。
如果要同时判断文件是否存在并创建文件,可以使用 os.Stat 函数来判断文件是否存在,然后再使用 os.Create 函数来创建文件。以下是一个示例代码:
package main
import (
"fmt"
"os"
)
func main() {
filename := 'path/to/file.txt'
// 检查文件是否存在
if _, err := os.Stat(filename); os.IsNotExist(err) {
// 文件不存在,创建文件
file, err := os.Create(filename)
if err != nil {
fmt.Println("创建文件失败:", err)
return
}
defer file.Close()
fmt.Println("文件创建成功")
} else if err != nil {
fmt.Println("检查文件失败:", err)
return
} else {
fmt.Println("文件已存在")
}
}
在上面的示例中,首先使用 os.Stat 函数来检查文件是否存在,如果返回的错误为 os.IsNotExist(err),则表示文件不存在,然后使用 os.Create 函数来创建文件。
如果要同时创建目录和文件,可以使用 os.MkdirAll 函数来创建目录,并指定文件的完整路径。以下是一个示例代码:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
filename := 'path/to/file.txt'
// 获取文件所在目录
dir := filepath.Dir(filename)
// 创建目录
err := os.MkdirAll(dir, os.ModePerm)
if err != nil {
fmt.Println("创建目录失败:", err)
return
}
// 创建文件
file, err := os.Create(filename)
if err != nil {
fmt.Println("创建文件失败:", err)
return
}
defer file.Close()
fmt.Println("目录和文件创建成功")
}
在上面的示例中,首先使用 filepath.Dir 函数获取文件所在的目录,然后使用 os.MkdirAll 函数来创建目录,最后使用 os.Create 函数来创建文件。
原文地址: http://www.cveoy.top/t/topic/fwJ7 著作权归作者所有。请勿转载和采集!