0

次のコードがあります。

/// <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 からファイル全体をプルしているわけではありません。ファイルの最後がダウンロードを完了する前に切断されたようです。

データを取得できる時間を延長するために追加できるものはありますか?

ありがとう、

デビッド

4

1 に答える 1

0

の代わりに、以下のコードを使用します (安全にresponseStream.Peek削除することもできます)。Thread.Sleep

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

    list.Add(line);
}
于 2012-11-20T10:31:21.713 に答える