区分大小写的' os.Stat '



我正在写一个检查工具;其中一条规则强制所有链接文件在磁盘上都有小写文件名,即:

  • some/asset.png == ok
  • another/asset.PNG == Fail
我希望用下面的代码验证这个规则:
f, err := os.Stat("another/asset.png")
actualName := f.Name()

然而,f.Name()的返回值总是反映传递给os.Stat()的值,例如:传递os.Stat("foo.BAR")将产生foo.BAR,即使文件在磁盘上被命名为foo.BaR

我解决这个问题是不是错了?对于给定的文件路径,是否有其他方法可以在磁盘上获得实际的,区分大小写的文件名?

谢谢。

当您启动一个文件时,info中返回的名称是您提供的名称,因为stat_tWin32FileAttributeData数据结构都不包含名称(在POSIX中,文件本身并没有真正的名称,它只是通过1个或多个硬链接命名的inode)。磁盘上文件的实际名称存储在父目录中。您需要遍历目录条目来查找存储在磁盘上的名称。

可以直接打开目录文件调用File.ReadDir,也可以使用ioutil.ReadDir方便函数。

相关内容

  • 没有找到相关文章

最新更新