在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切片。我仍然有根目录和文件名,但似乎任何进一步的子树信息都已经到了这个阶段。
发布于 2015-05-05 06:26:20
不是的。FileInfo接口不公开路径,os和ioutil包中提供的所有方法都将路径名作为字符串接受。
发布于 2019-05-14 14:12:50
作为附加信息,下面是如何构造包含路径的文件名字符串:
filename := filepath.Join(path, info.Name())发布于 2015-05-05 06:23:11
不能,文件不能仅使用FileInfo打开。os.Open只接受一个字符串。您应该始终拥有路径或父路径,因为这是获取FileInfo的唯一方法。
https://stackoverflow.com/questions/30040661
复制相似问题