2012-04-10 74 views
1

我想更新服務器上的現有文件,而不會丟失文件上已保存的數據。目前如果我嘗試寫點東西。它通過刪除以前的數據覆蓋文件。更新FTP服務器上的文本文件?

我正在使用以下代碼。

 using (StreamWriter sw = new StreamWriter(ftp.GetRequestStream(), Encoding.GetEncoding("iso-8859-1"))) 
     { 
      var sb = new StringBuilder(); 

      foreach (string value in row) 
      { 

       if (sb.Length > 0) 
        sb.Append(","); 

       sb.Append(value); 
      } 
      sw.WriteLine(oldRecords.ToString() + sb.ToString()); 
      sw.Flush(); 
     } 

我怎麼能在文件中沒有丟失已有數據更新文件。

感謝,

函數naveed

+2

要追加到一個文件,你不得不檢索文件,追加數據,並上傳修改後的文件。這是FTP的工作原理,它設計用於傳輸文件,它不是具有普通文件訪問語義的文件保護應用程序。 – Steve 2012-04-10 13:44:51

+0

@Steve:實際上FTP確實有「APPE」(追加)命令,儘管這個特殊命令的廣泛支持值得商榷。 – Brook 2012-04-10 13:54:40

回答

0

也許u能實現這個邏輯,你的FTP客戶端...

  1. 創建標誌 「更新=假」
  2. 下載這個文件在本地
  3. 通過您的自定義邏輯進行更改
  4. 將此文件用其他名稱上傳到服務器
  5. 重命名舊文件
  6. 新文件
  7. 刪除舊文件提供正確的名稱
  8. 馬克「更新=真」,否則回滾名稱爲服務器文件

注:U必須保持FTP客戶端的所有協議。


更新:

U可以嘗試使用一些開源代碼來開發你的FTP客戶端,即C# FTP Client Library

+2

還有內建的[FtpWebRequest](http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx) – Default 2012-04-10 14:20:17