2012-11-20 55 views
0

我有以下代码;FTP未检索完整文件

/// <summary> 
/// Gets a file 
/// </summary> 
/// <param name="filename"> The filename to get. </param> 
/// <returns> A list, containing each line of the file </returns> 
public IEnumerable<string> GetFileLines(string filename) 
{ 
    var list = new List<string>(); 

    var uri = BuildUri(filename); 

    var request = (FtpWebRequest)WebRequest.Create(uri.Uri); 
    request.Method = WebRequestMethods.Ftp.DownloadFile; 

    using (var resp = (FtpWebResponse)request.GetResponse()) 
    { 
    using (var stream = resp.GetResponseStream()) 
    { 
     Thread.Sleep(10000); 
     if (stream != null) 
     { 
     using (var responseStream = new StreamReader(stream)) 
     { 
      // If we still have characters to process 
      while (responseStream.Peek() >= 0) 
      { 
      var line = responseStream.ReadLine(); 
      list.Add(line); 
      } 
     } 
     } 
    } 
    } 

    return list; 
} 

但是它不拉从FTP-整个文件似乎文件的末尾下载完成之前切断。

有什么我可以添加来延长它允许检索数据的时间?

感谢,

大卫

+0

有任何错误,而读书?您是否尝试过在网络浏览器中使用FTP地址手动获取文件并检查是否可以? –

回答

0

代替responseStream.Peek,下面的代码使用(你也可以删除Thread.Sleep安全)

string line; 
while((line = responseStream.ReadLine())!=null) 
{ 

    list.Add(line); 
}