我想使用Go覆盖符号链接,但是我找不到方法。
如果我尝试创建符号链接并且它已经存在,则会返回错误。
我的代码:
err := os.Symlink(filePath, symlinkPath)
if err != nil {
fmt.Println(err)
}
我猜想符号链接必须先删除然后再创建。是对的吗?如果是这样,我如何取消符号链接的链接?
请注意,@ lVadyus的答案在运行lstat时隐藏了实际的文件系统错误。例如,如果磁盘损坏且Lstat发生故障,您仍将运行os.Remove并忽略其错误(危险,除非您想调试数小时,否则会忽略)。
以下代码片段可正确检查文件是否存在以及其他错误:
if _, err := os.Lstat(symlinkPath); err == nil {
if err := os.Remove(symlinkPath); err != nil {
return fmt.Errorf("failed to unlink: %+v", err)
}
} else if os.IsNotExist(err) {
return fmt.Errorf("failed to check symlink: %+v", err)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句