| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package main
- import (
- "errors"
- "fmt"
- "io/fs"
- "log"
- "os"
- "path/filepath"
- "runtime"
- )
- func exeDir() (string, error) {
- _, filename, _, _ := runtime.Caller(0)
- return filepath.Dir(filename), nil
- }
- func main() {
- dir, err := exeDir()
- if err != nil {
- fmt.Println("读取当前路径报错")
- return
- }
- fmt.Println("当前目录:", dir)
- newFilePath := filepath.Join(dir, "test.txt")
- // 检测文件是否存在
- if _, err := os.Stat(newFilePath); err == nil {
- log.Println("文件已存在,跳过创建:", newFilePath)
- return
- } else if !errors.Is(err, fs.ErrNotExist) {
- // 不是“不存在”错误,而是其他问题(权限、IO 等)
- log.Fatalf("无法检测文件状态: %v", err)
- }
- // 文件不存在,创建它
- file, err := os.Create(newFilePath)
- if err != nil {
- log.Fatalf("创建文件失败: %v", err)
- }
- defer file.Close()
- log.Println("文件创建成功:", newFilePath)
- }
|