go语言-文件操作

判断文件路径是否存在


func PathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}

创建文件夹


func CreateDir(dirs ...string) (err error) {
	for _, v := range dirs {
		exist, err := PathExists(v)
		if err != nil {
			return err
		}
		if !exist {
			global.GvaLog.Debug("create directory" + v)
			err = os.MkdirAll(v, os.ModePerm)
			if err != nil {
				global.GvaLog.Error("create directory"+v, zap.Any(" error:", err))
			}
		}
	}
	return err
}

删除本地文件

// DeleteLocalFile 删除当地文件
func DeleteLocalFile(filePath string) (err error) {
	err = os.Remove(filePath)
	return err
}

获取文件大小

// GetFileSize 获得文件大小
func GetFileSize(filePath string) (size int64) {
	file, err := os.Open(filePath)
	defer file.Close()
	if err == nil {
		fi, _ := file.Stat()
		return fi.Size()
	}
	return -1
}

保存文件到本地

// SaveLocalFile 保存文件到本地
// header 要保存的文件
// return saveDir 要保存到的目录
// return newFileName 重命名后的新名字
// return saveFilePath 文件保存后的保存路径
func SaveLocalFile(header *multipart.FileHeader, saveDir string) (err error, newFileName string, saveFilePath string) {
	ext := path.Ext(header.Filename)
	// 读取文件名(不带后缀)
	name := strings.TrimSuffix(header.Filename, ext)

	/* 重命名文件,防止文件重名 */
	newName := name + "_" + time.Now().Format("20060102150405") + ext
	/* 读取存放文件的路径 */
	saveFilePath = saveDir + "/" + newName
	/* 本地保存文件 */
	// 读取用户上传的文件
	in, readErr := header.Open()
	if readErr != nil {
		return errors.New("读取文件失败!"), "", ""
	}
	defer in.Close()

	// 创建预存的文件
	out, createErr := os.Create(saveFilePath)
	if createErr != nil {
		return errors.New("创建本地文件失败!"), "", ""
	}
	defer out.Close()

	// 拷贝文件
	_, copyErr := io.Copy(out, in)
	if copyErr != nil {
		return errors.New("保存本地文件失败!"), "", ""
	}
	return nil, newName, saveFilePath
}

获取文件后缀


// GetFileSuffix 读取文件后缀名
func GetFileSuffix(header *multipart.FileHeader) (suffix string) {
	ext := path.Ext(header.Filename)
	suffix = strings.ToLower(ext[1:len(ext)])
	return suffix
}

根据map生成json文件

func CreateJsonFile(info interface{})(savePath string){
	var dataJson  = make(map[string]interface{})
	dataJson["data"] = info
	b11, err := json.Marshal(dataJson)
	if err != nil {
		fmt.Println("error:", err)
	}
	relDir := "../static/json/"
	CreateDir(relDir)
	savePath = relDir+utils2.ToString(time.Now().UnixNano())+".json"
	err = ioutil.WriteFile(savePath, b11, os.ModeAppend)
	return savePath
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值