2016-05-23 59 views
1

我使用Tamir.SharpSSH庫進行我的SFTP操作。我可以從客戶端上傳文件,刪除或列出位於SFTP服務器目錄中的文件。如何使用SharpSSH庫追加文本文件

但我找不到如何附加文本文件。我不想覆蓋或刪除現有的並上傳一個新的。我在該SFTP服務器上有一個日誌文件。我必須從客戶端添加新行到該文件。

我剛剛搜索了互聯網,看到代碼中的不同功能,但沒有執行任何操作,因爲直到現在我還找不到任何東西。

在此先感謝

編輯

我決定使用,因爲@馬丁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."); 
      } 
     } 
    } 
} 
+0

SFTP心不是用來附加到文件。只有覆蓋,創建,刪除,列表,你已經找到。如果sftp服務器支持簡歷,你也許可以做些事情,因爲你可能能夠從服務器上的文件末尾恢復上傳。但是,它的遠射 – BugFinder

+0

@BugFinder這根本不是真的。使用SFTP,您可以訪問/覆蓋文件的任何部分,就像您使用本地文件一樣。 –

+0

嗯,好的 - 我只運行到sftp,它和普通的ftp運行相同的命令..安全地完成它 – BugFinder

回答

1

首先,不要使用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);