使用通配符*引用目录中的文件

Leahcim:

我正在尝试使用此Go lang论坛软件https://github.com/kjk/fofou它需要顶级论坛目录中的配置文件来指定有关论坛的某些信息(名称,URL等)。例如,软件设计人员使用的文件是forums/sumatrapdf_config.json

在main.go中,有此功能可读取论坛配置文件

    func readForumConfigs(configDir string) error {
    pat := filepath.Join(configDir, "*_config.json")
    fmt.Println("path", pat)
    files, err := filepath.Glob(pat)
    fmt.Println("files", files, err)
    if err != nil {
        return err
    }
    if files == nil {
        return errors.New("No forums configured!")
    }
    for _, configFile := range files {
        var forum ForumConfig
        b, err := ioutil.ReadFile(configFile)
        if err != nil {
            return err
        }
        err = json.Unmarshal(b, &forum)
        if err != nil {
            return err
        }
        if !forum.Disabled {
            forums = append(forums, &forum)
        }
    }
    if len(forums) == 0 {
        return errors.New("All forums are disabled!")
    }
    return nil
}

我一直在处理Join的第二个参数,并通过文件名和通配符*对其进行了调用,但是我不断收到错误消息,告诉我没有文件。

the log statements show the path that it's checking as well as the fact that no files are found
path forums/*funnyforum_config.json files [] 2014/07/25 10:34:11 Failed to read forum configs, err: No forums configured!

如果我尝试使用通配符来描述配置,则会发生同样的事情,就像*软件创建者在源代码中所做的那样

func readForumConfigs(configDir string) error { pat := filepath.Join(configDir, "*_config.json") fmt.Println("path", pat) files, err := filepath.Glob(pat) fmt.Println("files", files)

path forums/*_config.json files [] 2014/07/25 10:40:38 Failed to read forum configs, err: No forums configured!

在论坛目录中,我放置了各种配置文件

funnyforum_config.json _config.json

以及它附带的配置

sumatrapdf_config.json
OneOfOne:

您不glob应该检查来自的错误,也应该以其他方式实现它:

func FilterDirs(dir, suffix string) ([]string, error) {
    files, err := ioutil.ReadDir(dir)
    if err != nil {
        return nil, err
    }
    res := []string{}
    for _, f := range files {
        if !f.IsDir() && strings.HasSuffix(f.Name(), suffix) {
            res = append(res, filepath.Join(dir, f.Name()))
        }
    }
    return res, nil
}

func FilterDirsGlob(dir, suffix string) ([]string, error) {
    return filepath.Glob(filepath.Join(dir, suffix))
}

func main() {
    fmt.Println(FilterDirs("/tmp", ".json"))
    fmt.Println(FilterDirsGlob("/tmp", "*.json"))
}

playground

//编辑

从我们的讨论中,您必须使用完整路径/home/user/go/....../forums/或相对路径./forums/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以使用通配符从目录中的所有文件导入模块?

是否可以使用通配符从目录中的所有文件导入模块?

使用通配符搜索文件

MSBuild使用通配符将文件复制到目录路径

使用引用计数来统计目录中的文件数

如何在目录名称中使用通配符在Perl中打开文件?

Windows上具有通配符的目录中的文件

PowerShell不会使用通配符返回当前目录中的项目

使用javac的Java文件编译无法引用同一目录中的其他文件

使用目录上的通配符从文件夹复制内容

如何引用项目目录中的文件?

使用通配符从文件中获取Blob内容

使用通配符提取tar归档文件中的特定文件

如何使用批处理文件中的目录通配符移动或复制文件夹?

Symfony2-如何在树枝中使用{%javascripts%}引用Web目录中的文件?

在mv操作中引用通配符

如何使用rdiff-backup排除通配符目录但包括通配符文件?

如何使用通配符仅匹配文件而不匹配目录?

WinSCP通配符目录和文件

使用带通配符的sudo从root拥有的目录中删除文件

使用通配符将文件上移两个目录,然后删除目录

通过通配符输入在文件目录中查找丢失的文件

使用通配符列出两个目录中的内容

使用通配符移动文件?

使用通配符在 Bash Profile 中获取文件

如何使用特定子目录中的通配符提取文件

使用子目录通配符 (glob) 搜索文件

如何使用通配符 ls 子目录中的所有文件?

AutoHotKey - 如何引用当前目录中的文件?