|
|
|
|
package util
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"io/ioutil"
|
|
|
|
|
"os"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//PathExists 判断一个文件或文件夹是否存在
|
|
|
|
|
//输入文件路径,根据返回的bool值来判断文件或文件夹是否存在
|
|
|
|
|
func PathExists(path string) (bool, string) {
|
|
|
|
|
if len(path) == 0 {
|
|
|
|
|
return false, "path 不能为空"
|
|
|
|
|
}
|
|
|
|
|
_, err := os.Stat(path)
|
|
|
|
|
if err == nil {
|
|
|
|
|
return true, "存在"
|
|
|
|
|
}
|
|
|
|
|
if os.IsNotExist(err) {
|
|
|
|
|
return false, "path路径文件不存在"
|
|
|
|
|
}
|
|
|
|
|
return false, "path路径文件不存在"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ReadFileToStr(path string) string {
|
|
|
|
|
content, err := ioutil.ReadFile(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("read file failed, err:", err)
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
return string(content)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GenFile(str, path string) {
|
|
|
|
|
file, err := os.OpenFile(path, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("open file failed, err:", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
defer file.Close()
|
|
|
|
|
file.Write([]byte(str)) //写入字节切片数据
|
|
|
|
|
//file.WriteString("hello go") //直接写入字符串数据
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestGenFile(path, enPath, dePath string) {
|
|
|
|
|
strContent := ReadFileToStr(path)
|
|
|
|
|
Encrypt, _ := AesEcpt.AesBase64Encrypt(strContent)
|
|
|
|
|
GenFile(Encrypt, enPath)
|
|
|
|
|
//fmt.Printf("Encrypt: %v\n", Encrypt)
|
|
|
|
|
Decrypt, _ := AesEcpt.AesBase64Decrypt(Encrypt)
|
|
|
|
|
GenFile(Decrypt, dePath)
|
|
|
|
|
//fmt.Printf("Decrypt: %v\n", Decrypt)
|
|
|
|
|
fmt.Printf("明文长度: %v\n解密后长度: %v\n", len(strContent), len(Decrypt))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func EnFile(path string) {
|
|
|
|
|
EnFileToOutPath(path, path)
|
|
|
|
|
}
|
|
|
|
|
func EnFileToOutPath(path, outPath string) {
|
|
|
|
|
strContent := ReadFileToStr(path)
|
|
|
|
|
Encrypt, _ := AesEcpt.AesBase64Encrypt(strContent)
|
|
|
|
|
GenFile(Encrypt, outPath)
|
|
|
|
|
}
|
|
|
|
|
func DeFile(path string) {
|
|
|
|
|
DeFileToOutPath(path, path)
|
|
|
|
|
}
|
|
|
|
|
func DeFileToOutPath(path string, outPath string) {
|
|
|
|
|
strContent := ReadFileToStr(path)
|
|
|
|
|
Decrypt, _ := AesEcpt.AesBase64Decrypt(strContent)
|
|
|
|
|
GenFile(Decrypt, outPath)
|
|
|
|
|
}
|