登录
首页 >  Golang >  Go问答

如何字符串化 io.FileInfo

来源:stackoverflow

时间:2024-04-03 09:24:38 387浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《如何字符串化 io.FileInfo》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我想以 json 格式返回 io.fileinfo 数组,但 json.marshal 返回 nil。有什么好的办法吗?

package main

import (
    "fmt"
    "io/ioutil"
    "encoding/json"
)

func main () {
    dirlist, _ := ioutil.ReadDir("/var/tmp")
    retstr, _ := json.Marshal(dirlist)
    fmt.Println(string(retstr))
}

以上代码返回 [{},{},{},{},{},{},{},{},{},{},{}]


解决方案


os.fileinfo 值封送为空对象,因为文件信息字段不是 exported

声明一个类型,其中包含与每个 fileinfo 方法相对应的导出字段:

type fileinfo struct {
    name    string      // base name of the file
    size    int64       // length in bytes for regular files; system-dependent for others
    mode    os.filemode // file mode bits
    modtime time.time   // modification time
    isdir   bool        // abbreviation for mode().isdir()
}

将 []os.fileinfo 复制到 []fileinfo 并封送 []fileinfo。

fis := make([]fileInfo, len(dirlist))
for i, fi := range dirlist {
    fis[i] = fileInfo{
        Name:    fi.Name(),
        Size:    fi.Size(),
        Mode:    fi.Mode(),
        ModTime: fi.ModTime(),
        IsDir:   fi.IsDir(),
    }
}
retstr, _ := json.Marshal(fis)

Run it on the playground

好了,本文到此结束,带大家了解了《如何字符串化 io.FileInfo》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>