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 に答える