2012-04-10 2 views
1

Ich möchte die vorhandene Datei auf dem Server aktualisieren, ohne bereits gespeicherte Daten in der Datei zu verlieren. Derzeit Wenn ich versuche etwas zu schreiben. Es überschreibt die Datei, indem vorherige Daten entfernt werden.Aktualisieren der Textdatei auf dem FTP-Server?

Ich verwende folgenden Code.

 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(); 
     } 

Wie kann ich Datei aktualisieren, ohne die Daten bereits in der Datei zu verlieren.

Danke,

Naveed

+2

in eine Datei anhängen würden Sie die Datei abzurufen haben, hängen Sie Ihre Daten , und laden Sie die geänderte Datei hoch. So funktioniert FTP, es ist für die Übertragung von Dateien gedacht, es ist keine Datei-verwaltende Anwendung mit normaler Dateizugriffssemantik. – Steve

+0

@Steve: Eigentlich hat FTP den Befehl "APPE" (Append), obwohl es fraglich ist, wie weit dieser bestimmte Befehl unterstützt wird. – Brook

Antwort

0

Vielleicht u diese Logik für Ihren FTP-Client implementieren ...

  1. erstellen flag "aktualisiert = false"
  2. Download dieser lokal
  3. Datei
  4. Ändern Sie es durch Ihre benutzerdefinierte Logik
  5. Laden Sie diese Datei mit einem anderen Namen auf den Server
  6. umbenennen alte Datei
  7. korrekten Namen Geben Sie für die neue Datei
  8. Löschen Sie alte Datei
  9. Mark "aktualisiert = true" sonst Namen für die Server-Datei

HINWEIS Rollback: U müssen halten alles Protokoll beim FTP-Client.


UPDATES:

U kann versuchen, einige Open-Source-Code zu verwenden, um Ihren FTP-Client zu entwickeln, dh C# FTP Client Library

+2

gibt es auch die eingebaute [FtpWebRequest] (http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx) – Default