package main
import (
"encoding/base64"
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func main() {
// 从命令行参数获取文件夹路径
if len(os.Args) < 2 {
fmt.Println("请提供要处理的文件夹路径")
return
}
folderPath := os.Args[1]
// 检查文件夹是否存在
_, err := os.Stat(folderPath)
if os.IsNotExist(err) {
fmt.Println("指定的文件夹路径不存在")
return
}
// 获取上级目录路径
parentFolderPath := filepath.Dir(folderPath)
// 获取原始文件夹名称
base64FolderName := filepath.Base(folderPath) + "_base64"
// 创建保存 base64 文件的文件夹
base64FolderPath := filepath.Join(parentFolderPath, base64FolderName)
err = os.Mkdir(base64FolderPath, 0755)
if err != nil {
fmt.Println("无法创建 base64 文件夹:", err)
return
}
// 遍历文件夹
err = filepath.Walk(folderPath, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
// 检查是否是文件
if !info.IsDir() {
// 读取文件内容
fileData, err := ioutil.ReadFile(path)
if err != nil {
return err
}
// 转换为 base64
base64Str := base64.StdEncoding.EncodeToString(fileData)
// 获取原始文件名并生成 base64 文件路径
fileName := filepath.Base(path)
base64FilePath := filepath.Join(base64FolderPath, fmt.Sprintf("%s.txt", fileName))
// 创建并写入到 base64 文件中
err = ioutil.WriteFile(base64FilePath, []byte(base64Str), 0644)
if err != nil {
return err
}
fmt.Printf("文件 %s 转换成功并保存到 %s\n", path, base64FilePath)
}
return nil
})
if err != nil {
fmt.Println("出现错误:", err)
}
}