You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 5 Next »
在上一章节我们介绍通过gf工具链进行文件/目录打包,并生成Go文件编译到可执行文件中。在本章节中,我们介绍资源管理中涉及到的方法,并通过一个打包/解包二进制资源文件的示例,介绍这些方法实现自定义的打包/解包功能。同时,我们也演示了如何通过自定义加解密来保护我们的资源文件内容。
gf
Go
接口文档:https://godoc.org/github.com/gogf/gf/os/gres
主要方法介绍:
Pack*
Unpack*
Resource
File
os.File
http.File
ScanDir
ScanDirFile
Dump
/
gres
我们将项目根目录下的public和config目录打包为data.bin二进制文件,并通过gaes加密算法对生成的二进制内容进行加密。
public
config
data.bin
gaes
package main import ( "github.com/gogf/gf/crypto/gaes" "github.com/gogf/gf/os/gfile" "github.com/gogf/gf/os/gres" ) var ( CryptoKey = []byte("x76cgqt36i9c863bzmotuf8626dxiwu0") ) func main() { binContent, err := gres.Pack("public,config") if err != nil { panic(err) } binContent, err = gaes.Encrypt(binContent, CryptoKey) if err != nil { panic(err) } if err := gfile.PutBytes("data.bin", binContent); err != nil { panic(err) } }
我们使用将刚才打包生成的data.bin,需要解密和解包两步操作。
package main import ( "github.com/gogf/gf/crypto/gaes" "github.com/gogf/gf/os/gfile" "github.com/gogf/gf/os/gres" ) var ( CryptoKey = []byte("x76cgqt36i9c863bzmotuf8626dxiwu0") ) func main() { binContent := gfile.GetBytes("data.bin") binContent, err := gaes.Decrypt(binContent, CryptoKey) if err != nil { panic(err) } if err := gres.Add(binContent); err != nil { panic(err) } gres.Dump() }
最后,我们使用gres.Dump()打印出添加成功的文件列表查看资源文件是否添加成功。
gres.Dump()