2014-10-23 2 views
0

Я пытаюсь загрузить текстовый файл поверх ftp, и когда я запускаю программу, он пуст мой файл и загружает его. Я не знаю, почему ... Может это перезаписать или еще что-то ... Вот мой код:C# перезаписать файл с пустым файлом при попытке загрузить (ftp)

Это в главном классе

 /* Create Object Instance */ 
     ftp ftpClient = new ftp(@"ftp://sportcaffe.me", "sport***", "*****"); 

     /* Upload a File */ 
     ftpClient.upload("public_html/test.txt", @"C:\Users\Lazar\Desktop\test.txt"); 

А вот FTP функция класса код:

/* Upload File */ 
    public void upload(string remoteFile, string localFile) 
    { 
     try 
     { 
      /* Create an FTP Request */ 
      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile); 
      /* Log in to the FTP Server with the User Name and Password Provided */ 
      ftpRequest.Credentials = new NetworkCredential(user, pass); 
      /* When in doubt, use these options */ 
      ftpRequest.UseBinary = true; 
      ftpRequest.UsePassive = true; 
      ftpRequest.KeepAlive = true; 
      /* Specify the Type of FTP Request */ 
      ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; 
      /* Establish Return Communication with the FTP Server */ 
      ftpStream = ftpRequest.GetRequestStream(); 
      /* Open a File Stream to Read the File for Upload */ 
      FileStream localFileStream = new FileStream(localFile, FileMode.Create); 
      /* Buffer for the Downloaded Data */ 
      byte[] byteBuffer = new byte[bufferSize]; 
      int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); 
      /* Upload the File by Sending the Buffered Data Until the Transfer is Complete */ 
      try 
      { 
       while (bytesSent != 0) 
       { 
        ftpStream.Write(byteBuffer, 0, bytesSent); 
        bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); 
       } 
      } 
      catch (Exception ex) { MessageBox.Show(ex.ToString()); } 
      /* Resource Cleanup */ 
      localFileStream.Close(); 
      ftpStream.Close(); 
      ftpRequest = null; 
     } 
     catch (Exception ex) { MessageBox.Show(ex.ToString()); } 
     return; 
    } 

Там нет ошибок и предупреждений ...

первым я пишу что-то в моем файле и сохранить, а затем, когда я запускаю программу мой файл пуст, и что Empy файл был загружен .. .

я использовал этот код http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class

ответ

5
FileStream localFileStream = new FileStream(localFile, FileMode.Create); 

Я надеюсь, что мне не нужно, чтобы по буквам это слишком ясно, но выше линии говорят, чтобы создать файл. Чтобы процитировать документы: «Указывает, что операционная система должна создать новый файл. Если файл уже существует, он будет перезаписан».

http://msdn.microsoft.com/en-us/library/system.io.filemode(v=vs.110).aspx имеет список вариантов, которые вы можете использовать здесь. FileMode.Open должен быть хорош для ваших нужд (он откроет файл и если файл не существует, генерирует исключение).

0

решаемые

FileStream localFileStream = новый FileStream (лок_файл, FileMode.Create); replace FileMode.Create by FileMode.Open

+4

Почему вы опубликовали ответ? Это то, что рекомендует существующий ответ, вы должны просто принять его. – Rotem

Смежные вопросы