如何使用 SharpSSH 或 SSH.NET 库在 SFTP 服务器上附加文本文件

How to append a text file on SFTP server using SharpSSH or SSH.NET library

我使用 Tamir.SharpSSH 库来进行 SFTP 操作。我可以从客户端上传文件,删除或列出位于 SFTP 服务器目录中的文件。

但我找不到如何追加文本文件。我不想覆盖或删除现有的并上传新的。我在该 SFTP 服务器上有一个日志文件。我必须从客户端向该文件添加新行。

我刚刚在互联网上搜索并查看了代码中的不同功能,但没有尝试执行,因为直到现在我还找不到任何东西。

提前致谢

编辑

由于@Martin Prikryl 的建议,我决定使用 Renci.SshNet 库。我也用那个库尝试了上述操作,我发现它运行良好。使用该库将文本附加到文本文件也非常简单。我在这里分享一个小例子:

using System
using Renci.SshNet;

namespace SFTPConnectSample
{
    class Program
    {
        static void Main(string[] args)
        {
            AppendText(@"/targetFolder/targetFile.txt");
        }

        private static void AppendText(string targetFilePath)
        {
            int portNumber = 22;

            using (SftpClient sftp = new SftpClient("myHostName", portNumber, "sftpUser", "sftpPassword"))
            {
                sftp.ConnectionInfo.Timeout = new TimeSpan(0, 0, 30);
                sftp.Connect();
                sftp.AppendAllText(targetFilePath, "\r\nThis is a new line for target text file.");
            }
        }
    }
}

首先,不要使用SharpSSH。这是一个废弃的项目,多年未更新。

您可以改用 SSH.NET library

SftpClient class 有几种方法可供您使用:

public StreamWriter AppendText(string path)
public void AppendAllText(string path, string contents)
public void AppendAllLines(string path, IEnumerable<string> contents)

如果出于某种原因必须使用 SharpSSH,请使用:

SftpChannel.get(fromFilePath, toFilePath, monitor, ChannelSftp.APPEND);