Golang 判断 Linux 下两个路径是否指向同一卷
在 Linux 下,判断两个路径是否指向同一个卷,可以使用 Golang 的 os.SameFile 函数。该函数接收两个 FileInfo 作为参数,可以通过 os.Stat 函数获取文件信息。如果两个文件指向同一个文件,则返回 true,否则返回 false。
func SameFile(fi1, fi2 FileInfo) bool
然而,需要注意的是,同一个卷的两个路径可能并非指向同一个文件。例如:
package main
import (
"fmt"
"os"
)
func main() {
fi1, err := os.Stat("/tmp/file1.txt")
if err != nil {
panic(err)
}
fi2, err := os.Stat("/tmp/../tmp/file1.txt")
if err != nil {
panic(err)
}
fmt.Println(os.SameFile(fi1, fi2))
}
上述代码中,/tmp/file1.txt 和 /tmp/../tmp/file1.txt 实际上指向同一个文件,但 os.SameFile 函数会返回 false。
因此,在判断两个路径是否指向同一个卷时,需要先对路径进行标准化处理,然后再使用 os.SameFile 函数判断。
原文地址: https://www.cveoy.top/t/topic/mufb 著作权归作者所有。请勿转载和采集!