gpt4 book ai didi

arrays - 转到 : How to read the contents of two files and concatenate to a string

转载 作者:IT王子 更新时间:2023-10-29 02:04:49 26 4
gpt4 key购买 nike

我正在尝试修复 docker-machine 中的错误.问题似乎出在它的 vmware-fusion 驱动程序中。当尝试通过它的 MAC 地址解析机器时,它会引用 vmware dhcp 租约文件。不幸的是,当您使用自定义网络(例如专用网络 vmnet2)时,最新的 dhcp 租约将改为在文件“vmnet-dhcpd-vmnet2.leases”中。

反正我对围棋一窍不通。

我想实现类似(伪代码)的东西:

var allText = ""
for i in "/var/db/vmware/*.leases"
do read i; allText = allText ++ i
done

现有代码(fusion_darwin.go)看起来像这样:

// DHCP lease table for NAT vmnet interface
var dhcpfile = "/var/db/vmware/vmnet-dhcpd-vmnet8.leases"

if vmxfh, err = os.Open(d.vmxPath()); err != nil {
return "", err
}
defer vmxfh.Close()

if vmxcontent, err = ioutil.ReadAll(vmxfh); err != nil {
return "", err
}

我已经创建了一个问题等,但如果可能的话,我想一路学习更多关于 Go 的知识,并贡献我能解决的任何问题。

有什么想法吗?

最佳答案

在示例代码中,他们首先使用 os.Open 为文件返回一个 io.Reader,然后他们延迟关闭(延迟方法在之前调用你离开延迟范围)以确保他们的资源被清理。在下一行中,他们调用了 ioutil.ReadAll,它接受一个 io.Reader 并返回一个 []byte, error。如果错误不是零,他们只返回它和一个空字符串。要从 []byte 中获取字符串,您只需执行 s := string(myBytes)

因此,要读取您的目标文件,您只需完全复制上面代码的形式即可。更好的是,您可以将它移动到一个方法中并将文件路径传递给它,以便您可以重用它。值得一提的是,在 ioutil 包中有一个更容易使用的方法。我不确定上面的代码中没有使用它是否有充分的理由,而不是打开文件并将 io.Reader 传递给 ReadAll 你可以只需调用 ioutil.ReadFile 将路径传递给它,它还会返回一个 []byte, error,在检查错误后,您可以将一个字节 slice 附加到另一个字节 slice ,转换为字符串并返回。看起来有点像这样;

vmnetcontent, err := ioutil.ReadFile("/path/to/file.txt")

if err != nil {
return "", err
}

return string(append(vmxcontent, vmnetcontent)), nil

关于arrays - 转到 : How to read the contents of two files and concatenate to a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34683261/

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