go语言操作文件的常用代码,复制即可使用

package utils

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"os/exec"
	"strings"
)

// FileExists 判断给定路径的文件是否存在
// 如果文件存在,返回 true,否则返回 false
// 参数:
//
//	path string - 文件路径
//
// 返回值:
//
//	bool - 文件是否存在
func FileExists(path string) bool {
	if _, err := os.Stat(path); err == nil {
		return true
	}
	return false
}

// ReadFile 函数用于读取文件
func ReadFile(path string) ([]byte, error) {
	f, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	defer f.Close()
	b, err := io.ReadAll(f)
	if err != nil {
		return nil, err
	}
	return b, nil
}

// FileSave 函数用于保存文件
func FileSave(path, data string) error {
	//获取文件名
	fileName := strings.Split(path, "/")[len(strings.Split(path, "/"))-1]
	path = strings.ReplaceAll(path, fileName, "")
	// 创建目录路径
	if err := os.MkdirAll(path, 0755); err != nil {
		fmt.Println("Error creating directory:", err)
		return err
	}
	f, err := os.Create(path + fileName)
	if err != nil {
		return err
	}
	defer f.Close()
	_, err = io.WriteString(f, data)
	if err != nil {
		return err
	}
	return nil
}

// DownloadFile 函数用于下载文件,解压到指定目录,并删除下载的压缩文件
func DownloadFile(url, path string) {
	fileName := strings.Split(url, "/")[len(strings.Split(url, "/"))-1]
	// 下载文件
	response, err := http.Get(url)
	if err != nil {
		fmt.Println("Error downloading file:", err)
		return
	}
	defer response.Body.Close()
	// 创建目录路径
	if err := os.MkdirAll(path, 0755); err != nil {
		fmt.Println("Error creating directory:", err)
		return
	}
	// 创建目标文件
	out, err := os.Create(path + "/" + fileName)
	if err != nil {
		fmt.Println("Error creating file:", err)
		return
	}
	defer out.Close()

	// 将下载的内容保存到文件
	_, err = io.Copy(out, response.Body)
	if err != nil {
		fmt.Println("Error saving file:", err)
		return
	}

	// 解压文件到指定目录
	// cmd := exec.Command("tar", "xvf", path+"/"+fileName, "-C", path)
	cmd := exec.Command("unzip", path+"/"+fileName, "-d", path)
	err = cmd.Run()
	if err != nil {
		fmt.Println("Error extracting file:", err)
		return
	}

	// 删除源文件
	err = os.Remove(path + "/" + fileName)
	if err != nil {
		fmt.Println("Error deleting file:", err)
		return
	}

	fmt.Println("File downloaded, extracted, and source file deleted successfully.")
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值