2

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

1 回答 1

3

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

您可以改用SSH.NET 库

它的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);
于 2016-05-23T11:18:03.180 回答