1

アプリケーションに .NetFramework3.5 を使用する必要がありますがCopyTo()WriteTo()メソッドは 3.5 では使用できません。3.5 で同等のメソッドは何ですか?

3.5 でコードを実行すると、次のエラーがスローされます。

「System.IO.Stream」には「WriteTo」の定義が含まれておらず、タイプ「System.IO.Stream」の最初の引数を受け入れる拡張メソッド「WriteTo」が見つかりませんでした

コードは次のとおりです。

int fileId = 1;
foreach (string uri in uriList)
{

    request = (HttpWebRequest)WebRequest.Create (baseURL + uri);
    request.Headers.Add ("X", authenticateStr);
    request.Accept = "application/pdf";
    request.Method = "GET";

    webResponse = (HttpWebResponse)request.GetResponse();
    using (MemoryStream ms = new MemoryStream())
    using (FileStream outfile = new FileStream("document_", FileMode.Create)) {
        webResponse.GetResponseStream().WriteTo(ms);
        if (ms.Length > int.MaxValue) {
            throw new NotSupportedException("Cannot write a file larger than 2GB.");
        }
        outfile.Write(ms.GetBuffer(), 0, (int)ms.Length);
    }
}
Console.WriteLine("Done!");
4

2 に答える 2

0

CopyTo が必要な場合は、この拡張機能を使用します

public static void CopyTo(this Stream input, Stream output)
{
   // This method exists only in .NET 4 and higher

   byte[] buffer = new byte[4 * 1024];
   int bytesRead;

   while ((bytesRead = input.Read(buffer, 0, buffer.Length)) != 0)
   {
      output.Write(buffer, 0, bytesRead);
   }
}
于 2014-03-13T09:54:48.323 に答える