gpt4 book ai didi

go - sftp O_RDONLY 工作正常,但 O_RDWR 不能

转载 作者:行者123 更新时间:2023-12-01 22:27:50 25 4
gpt4 key购买 nike

使用函数 Open() 或 OpenFile(path, os.O_RDONLY) 后我可以读取文件,但之后无法删除文件。所以我尝试使用写标志 os.RDWR 打开文件,如下面的代码,看看我是否可以删除文件。但是,使用 os.RDWR 我什至无法读取该文件。谁能向我解释一下导致这个问题的原因?我收到错误 sftp:“权限被拒绝”(SSH_FX_PERMISSION_DENIED)
我试过查看文件的权限码,文件是-rwxrwxrwx。

import (github.com/pkg/sftp)

config = sftp.NewConfig(nil)
config.SetAcct("xxxxx","xxxxx")
config.SetDes("ip address", 1234)
config.Connect()

if file, err = config.Client.OpenFile(path, os.O_RDWR); err != nil {
log.Println("Cannot open "+path+" , err:", err)
}

if _, err = ioutil.ReadAll(file); err != nil {
log.Println("Cannot read "+path+", err:", err)
}

file.Close()

err = config.Client.Remove(file)
if err != nil {
log.Println("cannot remove file)
}

问题解决了:
发现我打开了文件而没有关闭它。并且不知何故,该文件仍然由 FreeSSHDService 打开。这就是为什么我无法删除该文件。

最佳答案

您必须提供文件路径,而不是提供文件处理程序。

config.Client.Remove(pathTofile)
defer file.close()

这里是引用 https://godoc.org/github.com/pkg/sftp#Client.Remove

关于go - sftp O_RDONLY 工作正常,但 O_RDWR 不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58850854/

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