package util

import (
	"io"
	"os"
	"path/filepath"
)

func ReadFile(filePath string) (string, error) {
	// 1 打开文件
	file, err := os.Open(filePath)
	if err != nil {
		return "", err
	}
	defer file.Close()

	// 2 读取文件内容
	content, err := io.ReadAll(file)
	if err != nil {
		return "", err
	}
	return string(content), err
}

func RemoveFile(path string) error {
	// 检查文件是否存在
	if _, err := os.Stat(path); err == nil {
		// 文件存在，执行删除操作
		err = os.Remove(path)
		if err != nil {
			return err
		}
	}
	return nil
}

func WriteFile(sourceContent string, targetFilePath string) error {
	if err := CreateFile(targetFilePath); err != nil {
		return err
	}
	if err := os.WriteFile(targetFilePath, []byte(sourceContent), 0644); err != nil {
		return err
	}
	return nil
}

// CreateFile 存在则覆盖，不存在则创建文件
func CreateFile(filePath string) error {
	if err := CreateParentDir(filePath); err != nil {
		return err
	}
	// 创建文件，如果文件已存在则覆盖
	file, err := os.Create(filePath)
	if err != nil {
		return err
	}
	defer func(file *os.File) {
		err := file.Close()
		if err != nil {

		}
	}(file)
	return nil
}

// CreateParentDir 存在不创建，不存在则创建父目录
func CreateParentDir(filePath string) error {
	if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
		return err
	}
	return nil
}
