登录
首页 >  Golang >  Go教程

Golangos.FileInfo获取文件信息方法

时间:2025-10-01 22:22:32 144浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Golang os.FileInfo获取文件属性方法》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

答案:os.FileInfo接口用于获取文件元信息,通过os.Stat()获取文件属性,结合os.ReadDir()可高效遍历目录,利用Mode()可判断权限与文件类型,适用于文件管理等场景。

Golang使用os.FileInfo获取文件属性实践

在Go语言中,os.FileInfo 是一个接口,用于描述文件的元信息,比如文件名、大小、权限、修改时间等。通过 os.Stat() 函数可以获取指定路径文件的 FileInfo 对象,是日常开发中处理文件属性的核心方式。

获取文件基本信息

使用 os.Stat() 可以读取文件的详细属性。如果文件不存在或无法访问,会返回错误。

<code>package main

import (
    "fmt"
    "log"
    "os"
)

func main() {
    fileInfo, err := os.Stat("example.txt")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("文件名:", fileInfo.Name())
    fmt.Println("文件大小:", fileInfo.Size(), "字节")
    fmt.Println("是否为目录:", fileInfo.IsDir())
    fmt.Println("权限:", fileInfo.Mode())
    fmt.Println("最后修改时间:", fileInfo.ModTime())
}
</code>

上述代码输出文件的基本属性。其中:

  • Name() 返回不含路径的文件名
  • Size() 返回文件字节数,对目录也适用(但通常不表示内容总大小)
  • IsDir() 判断是否为目录
  • Mode() 返回文件模式,包含权限和类型信息
  • ModTime() 返回最后一次修改的时间戳

判断文件权限与类型

FileInfo.Mode() 不仅包含读写执行权限,还能反映文件类型(如普通文件、目录、符号链接等)。

可以通过位操作进一步分析:

<code>mode := fileInfo.Mode()
if mode&0400 != 0 {
    fmt.Println("拥有读权限")
}
if mode&0200 != 0 {
    fmt.Println("拥有写权限")
}
if mode&0100 != 0 {
    fmt.Println("拥有执行权限")
}

// 判断是否为符号链接
if mode&os.ModeSymlink != 0 {
    fmt.Println("这是一个符号链接")
}
</code>

常见模式常量包括:os.ModeDiros.ModeSymlinkos.ModeNamedPipe 等,可用于类型判断。

遍历目录并获取每个文件属性

结合 os.ReadDir()os.Stat(),可批量获取目录中各项的属性。

<code>entries, err := os.ReadDir(".")
if err != nil {
    log.Fatal(err)
}

for _, entry := range entries {
    // entry 是 fs.DirEntry 类型,可直接转为 FileInfo
    info, _ := entry.Info()

    fmt.Printf("文件: %s | 大小: %d | 修改时间: %s\n",
        info.Name(), info.Size(), info.ModTime().Format("2006-01-02 15:04"))
}
</code>

注意:os.ReadDir() 返回的是 fs.DirEntry,调用其 Info() 方法才会得到完整的 FileInfo。这种方式性能优于直接对每个文件调用 os.Stat(),因为系统可能做了一定优化。

基本上就这些。掌握 os.FileInfo 的使用,能有效支撑文件管理、日志分析、备份工具等场景下的属性读取需求。不复杂但容易忽略细节,比如权限解析和符号链接判断,实际项目中很实用。

今天关于《Golangos.FileInfo获取文件信息方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>