- 运行目录定位、路径存在性、带进度回调下载、Zip 打包/解压(兼容 GBK 中文文件名) - 附单元测试、examples/filex 例程与包 README
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
// filex 包示例:文件与目录工具(运行目录、路径存在性、Zip 打包解压)
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"git.zeroonesoft.cn/golib/zogo/filex"
|
|
)
|
|
|
|
func main() {
|
|
// 路径与目录
|
|
exists, _ := filex.PathExists(".")
|
|
fmt.Println("当前目录存在:", exists)
|
|
fmt.Println("工作目录:", filex.GetWorkDir())
|
|
fmt.Println("运行目录:", filex.GetRunDir())
|
|
|
|
// Zip 打包与解压(兼容 GBK 中文文件名)
|
|
zipDemo()
|
|
}
|
|
|
|
func zipDemo() {
|
|
dir, err := os.MkdirTemp("", "zogo-filex-*")
|
|
if err != nil {
|
|
fmt.Println("创建临时目录失败:", err)
|
|
return
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
|
|
src := filepath.Join(dir, "aaa")
|
|
if err := os.MkdirAll(src, 0755); err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
if err := os.WriteFile(filepath.Join(src, "hello.txt"), []byte("hello zip"), 0644); err != nil {
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
zipPath := filepath.Join(dir, "aaa.zip")
|
|
if err := filex.Zip(src, zipPath); err != nil {
|
|
fmt.Println("Zip 失败:", err)
|
|
return
|
|
}
|
|
dest := filepath.Join(dir, "out")
|
|
if err := filex.Unzip(zipPath, dest); err != nil {
|
|
fmt.Println("Unzip 失败:", err)
|
|
return
|
|
}
|
|
data, err := os.ReadFile(filepath.Join(dest, "aaa", "hello.txt"))
|
|
fmt.Println("解压读回内容:", string(data), "错误:", err)
|
|
}
|