从FileInfo打开文件

Ric*_*h L 15 go

在golang中,如果我有一个os.FileInfo,有没有办法在*os.File没有原始路径的情况下自己打开它?

假设我有这样的事情:

package main

import (
    "os"
    "path/filepath"
    "strings"
)

var files []os.FileInfo

func walker(path string, info os.FileInfo, err error) error {
    if strings.HasSuffix(info.Name(), ".txt") {
        files = append(files, info)
    }
    return nil
}

func main() {
    err := filepath.Walk("/tmp/foo", walker)
    if err != nil {
        println("Error", err)
    } else {
        for _, f := range files {
            println(f.Name())
            // This is where we'd like to open the file
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法转换FileInfo* File?我实际使用的代码不是基于filepath.Walk; 但我确实得到了[]os.FileInfo回报.我仍然有根目录和文件名,但似乎任何进一步的子树信息都已经过了这个阶段.

eva*_*nal 14

不.FileInfo接口根本不公开路径,os并且ioutil包中的所有提供的方法都接受路径名作为字符串.


Dir*_*irk 11

作为附加信息,这是如何构造包括路径的文件名字符串:

filename := filepath.Join(path, info.Name())
Run Code Online (Sandbox Code Playgroud)