2012-04-10 1 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(); 
     } 

Как я могу обновить файл, не теряя данные уже в файле.

Спасибо,

Навид

+2

Для добавления в файл вы должны получить файл, добавить свои данные , и загрузить измененный файл. Так работает FTP, он предназначен для передачи файлов, это не приложение для работы с файлами с обычной семантикой доступа к файлам. – Steve

+0

@Steve: На самом деле у FTP есть команда APPE (Append), хотя дискуссионно, насколько широко поддерживается эта конкретная команда. – Brook

ответ

0

Возможно, и может реализовать эту логику для вашего FTP-клиента ...

  1. Создать флаг "Обновлено = ложь"
  2. Скачать этот файл локально
  3. Изменить его по вашей логике
  4. Загрузите этот файл с другим именем на сервер
  5. Переименовать старый файл
  6. Дайте правильное имя для нового файла
  7. Удалить старый файл
  8. Mark «Обновлено = истина» в противном случае откатить имя файла сервера

ПРИМЕЧАНИЕ: U должен держать весь протокол на FTP-клиенте.


ОБНОВЛЕНИЕ:

U может попытаться использовать некоторый открытый исходный код, чтобы развивать свой FTP-клиент, т.е. C# FTP Client Library

+2

есть также встроенный [FtpWebRequest] (http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx) – Default