linux下golang判断两路径是不是同一卷
在Linux下,可以使用os.SameFile函数来判断两个路径是否指向同一个文件。该函数的原型如下:
func SameFile(fi1, fi2 FileInfo) bool
其中,fi1和fi2分别表示两个文件的信息,可以通过os.Stat函数获取。如果两个文件指向同一个文件,则返回true,否则返回false。
但是,要注意的是,同一个卷的两个路径可能并不是同一个文件,例如:
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函数进行判断。
原文地址: http://www.cveoy.top/t/topic/6pa 著作权归作者所有。请勿转载和采集!