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) }