2012-04-10 75 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