gpt4 book ai didi

windows - 使用 golang 创建硬链接(hard link)

转载 作者:IT王子 更新时间:2023-10-29 01:18:49 31 4
gpt4 key购买 nike

我想使用 golang 创建指向文件的硬链接(hard link)。os.Link() 告诉我,Windows 不受支持。因此我尝试使用 os.exec 来调用“mklink.exe”。

cmd := exec.Command("mklink.exe", "/H", hardlink_path, file_path)
err := cmd.Run()

但是,它告诉我,它无法在 %PATH% 中找到 mklink.exe。这让我感到困惑,因为我可以使用 cmd 调用它。

接下来我尝试通过 cmd 间接调用它:

cmd := exec.Command("cmd.exe", "mklink.exe", "/H", hardlink_path, file_path)
err := cmd.Run()

现在它不会返回任何错误,但是,它也不会创建硬链接(hard link)。有什么建议吗?

最佳答案

Go 1.4 中添加了对原生 Windows 硬链接(hard link)的 Golang 支持。具体来说,this commit使以下代码段有效:

err := os.Link("original.txt", "link.txt")

请注意,并非所有 Windows 文件系统都支持硬链接(hard link)。目前NTFS and UDF support it , 但 FAT32、exFAT 和 the newer ReFS do not .

完整示例代码:

package main

import (
"log"
"os"
"io/ioutil"
)

func main() {
err := ioutil.WriteFile("original.txt", []byte("hello world"), 0600)
if err != nil {
log.Fatalln(err)
}

err = os.Link("original.txt", "link.txt")
if err != nil {
log.Fatalln(err)
}
}

关于windows - 使用 golang 创建硬链接(hard link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800044/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com