2012-02-27 94 views
2

我用下面的代碼讀取響應:HttpWebResponse剝離換行符

using (Stream MyResponseStream = hwresponse.GetResponseStream()) 
{ 
     byte[] MyBuffer = new byte[4096]; 
     int BytesRead; 

     while (0 < (BytesRead = MyResponseStream.Read(MyBuffer, 0, MyBuffer.Length))) 
     { 
      ByteArrayToFile("request.txt", MyBuffer, BytesRead); 
     } 
} 

這是寫入到文件中的函數:

public void ByteArrayToFile(string _FileName, byte[] _ByteArray, int BytesRead) 
{ 
     System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Append, System.IO.FileAccess.Write); 
     _FileStream.Write(_ByteArray, 0, BytesRead); 
     _FileStream.Close(); 
} 

如果我使用Web客戶端,我得到新行都能正確解析。當我使用HttpWebResponse新行字符被剝離(不是全部,但80%)。任何暗示爲什麼會發生這種情況?謝謝!

+1

這就是非常低效的。嘗試保持文件處於打開狀態,直到完成寫入,而不是爲每個寫入操作打開/關閉文件。 – 2012-02-28 00:27:47

+0

謝謝!儘管如此,我仍然面臨着換行問題。任何提示如何處理它? – user1015551 2012-02-28 12:08:36

+0

看起來你只是寫一個文本文件...你可以嘗試一個system.io.streamreader而不是分塊。 – 2012-02-28 18:42:25

回答

0

你可以只使用下面的代碼寫入到一個文件的完整響應:

using (StreamReader MyResponseStream = new StreamReader(hwresponse.GetResponseStream())) 
{ 
    using (StreamWriter _FileStream = new StreamWriter("request.txt", true)) 
    { 
     _FileStream.Write(MyResponseStream.ReadToEnd()); 
    } 
}