【发布时间】:2021-02-12 15:45:04
【问题描述】:
我正在使用 Renci.SshNet 连接到 SFTP 并逐个遍历文件夹中存在的文件,并在我们读取文件后删除。然后我们继续下一个文件。但我观察到我无法删除文件的问题。当我尝试sftp.DeleteFile(item.FullName); 时,它会给出“没有这样的文件” 错误消息。
下面是给出上述问题的示例代码。
using (SftpClient sftp = new SftpClient(con))
{
sftp.Connect();
var fileList = sftp.ListDirectory("/Foldername");
foreach (var item in fileList)
{
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
using (XmlTextWriter writer = new XmlTextWriter(sw))
//reading files from MFT
using (XmlReader reader = XmlTextReader.Create(sftp.OpenRead(item.FullName)))
{
while (reader.Read())
{
if (reader.LocalName == "Employee" && reader.IsStartElement())
{
writer.WriteStartElement(
reader.Prefix, reader.LocalName, reader.NamespaceURI);
writer.WriteAttributes(reader, true);
}
}
}
sb = null;
// This line fails and I get "no such file" error message.
sftp.DeleteFile(item.FullName);
}
sftp.Disconnect();
}
但如果我在读取文件后断开连接并再次连接,我可以删除文件。
此解决方法解决了问题:
sftp.Disconnect(); // If I disconnect and connect again, I am able to delete the file
sftp.Connect(); // Connecting again
sftp.DeleteFile(item.FullName); // Now delete file works
【问题讨论】: