goframe常见问题总结
happylay 🐑 2021-01-14 17:12:28 代码片段golanggoframe
摘要: goframe常见问题总结 时间: 2021-01-14
# sqlite3打二进制后无法读取解决方案
由于goframe
不会从内存
中读取sqlite3
文件,所以可以采取折中的方式,从内存中加载文件到本地。
package main
import (
_ "github.com/gogf/gf-gen/boot"
_ "github.com/gogf/gf-gen/router"
"io/ioutil"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gfile"
"github.com/gogf/gf/os/gres"
)
func main() {
// 搜索文件路径-(源码加载文件方式)
if absPath, err := gfile.Search("./db/sqlite3.db"); err == nil {
g.Log().Info("绝对路径", absPath)
} else {
g.Log().Error("错误信息", err)
}
// sqlite3数据库所在路径
path := "./db"
// sqlite3数据库名称
fileName := "sqlite3.db"
// 内存文件路径(不能以./开头)
memoryPath := "db/sqlite3.db"
// 判断文件夹是否为空
if empty := gfile.IsEmpty(path); empty {
// 文件夹为空则创建文件夹
if err := gfile.Mkdir(path); err == nil {
// 从内存中获取资源文件
file := gres.Get(memoryPath)
// 将资源文件写入本地
if err := ioutil.WriteFile(path+"/"+fileName, file.Content(), 0666); err != nil {
// 记录错误日志
g.Log().Error(err)
}
// 打印文件信息
g.Dump(file)
} else {
// 记录错误日志
g.Log().Error(err)
}
}
g.Server().Run()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 加载配置文件相关源码
核心源码gcfg.go
中FilePath()方法
。
func (c *Config) FilePath(file ...string) (path string) {
name := c.name
if len(file) > 0 {
name = file[0]
}
// 搜索资源管理器
if !gres.IsEmpty() {
for _, v := range resourceTryFiles {
if file := gres.Get(v + name); file != nil {
path = file.Name()
return
}
}
c.paths.RLockFunc(func(array []string) {
for _, prefix := range array {
for _, v := range resourceTryFiles {
// 查询获取资源管理器文件
if file := gres.Get(prefix + v + name); file != nil {
path = file.Name()
return
}
}
}
})
}
// 搜索文件系统
c.paths.RLockFunc(func(array []string) {
for _, prefix := range array {
prefix = gstr.TrimRight(prefix, `\/`)
if path, _ = gspath.Search(prefix, name); path != "" {
return
}
if path, _ = gspath.Search(prefix+gfile.Separator+"config", name); path != "" {
return
}
}
})
return
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39