use*_*648 6 windows hardlink go
我想使用golang创建一个文件的硬链接.os.Link()告诉我,不支持windows.因此我尝试使用os.exec,调用"mklink.exe".
cmd := exec.Command("mklink.exe", "/H", hardlink_path, file_path)
err := cmd.Run()
Run Code Online (Sandbox Code Playgroud)
但是,它告诉我,它无法在%PATH%中找到mklink.exe.这让我感到困惑,因为我可以使用cmd来调用它.
接下来我试图通过cmd间接调用它:
cmd := exec.Command("cmd.exe", "mklink.exe", "/H", hardlink_path, file_path)
err := cmd.Run()
Run Code Online (Sandbox Code Playgroud)
现在它不会返回任何错误,但是,它也不会创建硬链接.有什么建议?
小智 7
Go 1.4中添加了对本机Windows硬链接的Golang支持.具体来说,此提交使以下代码段工作:
err := os.Link("original.txt", "link.txt")
Run Code Online (Sandbox Code Playgroud)
请注意,并非所有Windows文件系统都支持硬链接.目前NTFS和UDF支持它,但FAT32,exFAT和较新的ReFS不支持.
完整示例代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |