从 FileInfo 打开文件

在 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

        }

    }

}

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


慕婉清6462132
浏览 252回答 3
3回答

慕的地6264312

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

qq_遁去的一_1

不,不能仅使用 FileInfo 打开文件。os.Open 只需要一个字符串。您应该始终拥有路径或父路径,因为这是获取 FileInfo 的唯一方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go