main.go 923 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "io/fs"
  6. "log"
  7. "os"
  8. "path/filepath"
  9. "runtime"
  10. )
  11. func exeDir() (string, error) {
  12. _, filename, _, _ := runtime.Caller(0)
  13. return filepath.Dir(filename), nil
  14. }
  15. func main() {
  16. dir, err := exeDir()
  17. if err != nil {
  18. fmt.Println("读取当前路径报错")
  19. return
  20. }
  21. fmt.Println("当前目录:", dir)
  22. newFilePath := filepath.Join(dir, "test.txt")
  23. // 检测文件是否存在
  24. if _, err := os.Stat(newFilePath); err == nil {
  25. log.Println("文件已存在,跳过创建:", newFilePath)
  26. return
  27. } else if !errors.Is(err, fs.ErrNotExist) {
  28. // 不是“不存在”错误,而是其他问题(权限、IO 等)
  29. log.Fatalf("无法检测文件状态: %v", err)
  30. }
  31. // 文件不存在,创建它
  32. file, err := os.Create(newFilePath)
  33. if err != nil {
  34. log.Fatalf("创建文件失败: %v", err)
  35. }
  36. defer file.Close()
  37. log.Println("文件创建成功:", newFilePath)
  38. }