基本使用示例
首先在项目下建立一个static
文件夹(当然名字随意命名,没有规定),然后在下面创建几个文件,分别在文件里填入我是s1/s2/s3文件里的具体如下目录结构
导入为string
package main
import (
_ "embed"
"fmt"
)
//go:embed static/s1.txt
var content string
func main() {
fmt.Printf("静态文件内容:%s\n",content)
}
输出:
静态文件内容:我是s1文件里的
导入为[]byte
package main
import (
_ "embed"
"fmt"
)
//go:embed static/s1.txt
var content []byte
func main() {
fmt.Printf("静态文件内容:%s\n",string(content))
}
输出:
静态文件内容:我是s1文件里的
导入为FS文件系统
Open方法
package main
import (
"embed"
"fmt"
)
//go:embed static
var content embed.FS
func main() {
// 打开FS文件系统下路径为`static/s1.txt`的文件
file,err:=content.Open("static/s1.txt")
defer file.Close()
if err != nil {
fmt.Println(err)
}
// 读取File的数据
var c = make([]byte,30)
l,err:=file.Read(c)
fmt.Printf("Open的内容:%s\n",c)
fmt.Printf("Open读取的内容长度:%d\n",l)
}
输出:
Open的内容:我是s1文件里的
Open读取的内容长度:20
ReadDir方法
package main
import (
"embed"
"fmt"
)
//go:embed static
var content embed.FS
func main() {
// 打开文件
files,err:=content.ReadDir("static")
if err != nil {
fmt.Println(err)
}
for _,f:=range files{
fmt.Printf("文件名:%s\n",f.Name())
fmt.Print("是否是文件夹:")
fmt.Println(f.IsDir())
fileInfo,_:=f.Info()
fmt.Printf("文件权限:%s\n",fileInfo.Mode())
fmt.Println("--------------------------------------")
}
}
输出:
文件名:s1.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------
文件名:s2.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------
文件名:s3.txt
是否是文件夹:false
文件权限:-r--r--r--
--------------------------------------
ReadFile方法
package main
import (
"embed"
"fmt"
)
//go:embed static
var content embed.FS
func main() {
c2,_:=content.ReadFile("static/s1.txt")
fmt.Printf("ReadFile内容:%s\n",c2)
}
输出:
ReadFile内容:我是s1文件里的