首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从FileInfo打开文件

从FileInfo打开文件
EN

Stack Overflow用户
提问于 2015-05-05 05:55:22
回答 3查看 18.7K关注 0票数 22

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

假设我有这样的东西:

代码语言:javascript
复制
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切片。我仍然有根目录和文件名,但似乎任何进一步的子树信息都已经到了这个阶段。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-05 06:26:20

不是的。FileInfo接口不公开路径,osioutil包中提供的所有方法都将路径名作为字符串接受。

票数 21
EN

Stack Overflow用户

发布于 2019-05-14 14:12:50

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

代码语言:javascript
复制
filename := filepath.Join(path, info.Name())
票数 6
EN

Stack Overflow用户

发布于 2015-05-05 06:23:11

不能,文件不能仅使用FileInfo打开。os.Open只接受一个字符串。您应该始终拥有路径或父路径,因为这是获取FileInfo的唯一方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30040661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档