今天就跟大家聊聊有关使用golang怎么将文件嵌入到可执行程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。嵌入文件直接访问原理是使用Go:embed标签来完成。下面是直接读取文件内
今天就跟大家聊聊有关使用golang怎么将文件嵌入到可执行程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
原理是使用Go:embed
标签来完成。下面是直接读取文件内容,需要注意下面几点。
文件不是utf8
编码时,输出内容为中文会乱码。
测试过嵌入文件只能为源码文件同级目录和子目录下的文件,试过其他目录的绝对路径或相对路径会报错。
我测试过几个能想到的场景,有些会报错,所以在使用时需要注意。
package main import ( _ "embed") //go:embed test.txtvar testString string // 当前目录,解析为string类型 //go:embed test.txtvar testByte []byte // 当前目录,解析为[]byte类型 //go:embed test/test.txtvar testAbsolutePath string // 子目录,解析为string类型 //go:embed notExistsFilevar testErr0 string // 文件不存在,编译报错:pattern notExistsFile: no matching files found //go:embed dirvar testErr1 string // dir是目录,编译报错:pattern dir: cannot embed directory dir: contains no embeddable files //go:embed ../test.txtvar testErr2 string // 相对路径,不是当前目录或子目录,编译报错:pattern ../test.txt: invalid pattern syntax //go:embed D:\test.txtvar testErr3 string // 绝对路径,编译报错:pattern D:\test.txt: no matching files found func main() { println(testString) println(string(testByte)) println(testAbsolutePath)}
package main import ( "embed" "io" "os") //go:embed test0.txt test1.txt test1*.txt//go:embed test/test0.txt test/test1.txt//go:embed test0var fileList embed.FS func main() { testDir, err := fileList.ReadDir("test0") if err != nil { panic(err) } for _, v := range testDir { println(v.Name()) // 打印嵌入的目录内容 } // 使用fileList.Open可以生成一个对象,可以通过文件流那样读出来 testFile, err := fileList.Open("test0.txt") if err != nil { panic(err) } io.Copy(os.Stdout, testFile) testFile, err = fileList.Open("test112.txt") if err != nil { panic(err) } io.Copy(os.Stdout, testFile) testFile, err = fileList.Open("test/test1.txt") if err != nil { panic(err) } io.Copy(os.Stdout, testFile) // 直接将文件内容读出来 data, err := fileList.ReadFile("test111.txt") if err != nil { panic(err) } println(string(data))}
看完上述内容,你们对使用golang怎么将文件嵌入到可执行程序有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网GO频道,感谢大家的支持。
--结束END--
本文标题: 使用golang怎么将文件嵌入到可执行程序
本文链接: https://www.lsjlt.com/news/246536.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0