我正在写一个linting工具;其中一条规则强制所有链接文件在磁盘上都有小写文件名 ,即:
some/asset.png
==确定another/asset.PNG
==失败我希望使用以下代码验证此规则:
f, err := os.Stat("another/asset.png")
actualName := f.Name()
然而,f.Name()
的重新调整值始终反映传递给os.Stat()
的值,例如:即使文件名为{{1},传递os.Stat("foo.BAR")
也会产生foo.BAR
在磁盘上。
我刚接近这个问题错了吗?是否有另一种方法可以在给定文件路径的磁盘上获取实际,区分大小写的文件名?
感谢。
答案 0 :(得分:4)
当您统计文件时,信息中返回的名称是您提供的名称,因为stat_t
和Win32FileAttributeData
数据结构都不包含名称(在POSIX中,文件本身并不是真的有一个名字,它只是一个通过1个或多个硬链接命名的inode)磁盘上文件的实际名称存储在父目录中。您将需要遍历目录条目以查找存储在磁盘上的名称。
您可以直接打开目录文件并致电File.ReadDir
,或使用ioutil.ReadDir
便利功能。