如何使用SharpSSH库附加文本文件

时间:2016-05-23 10:51:56

标签: c# sftp sharpssh

我使用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.");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

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

您可以改为使用SSH.NET library

它的SftpClient类有几种方法可以使用:

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);