【问题标题】:StreamWriter Writes everything on same lineStreamWriter 将所有内容写入同一行
【发布时间】:2013-12-17 18:16:22
【问题描述】:

我有一个小的 HttpWebRequest,它可以从在线 .txt 文件中获取一些文本

得到它后,我想将它保存到计算机上的 .txt 文件中。

文本的内容格式如下:

Line one
Line two
Line four
Line Five
Line ten etc.

但是当它保存时,它最终是这样的:

Line oneLine twoLine fourLine FiveLine ten etc.

我该如何解决这个问题?

代码如下:

HttpWebRequest WebReq3 = (HttpWebRequest)WebRequest.Create("http://test.net/test.txt");

HttpWebResponse WebResp3 = (HttpWebResponse)WebReq3.GetResponse();

System.IO.StreamReader sr3 = new System.IO.StreamReader(WebResp3.GetResponseStream());


System.IO.StreamWriter _WriteResult = new StreamWriter(Application.StartupPath + "\Test.txt");
_WriteResult.Write(sr3.ReadToEnd());
_WriteResult.Close();

sr3.Close();

【问题讨论】:

  • 您是否使用同一个编辑器读取两个 txt 文件?有时不同的编辑器对换行的解释不同
  • @SystemDown,是的;另一种说法。这一定是编码问题。
  • 您确定您收到的文本内容有换行符吗?通过将字节数据直接从响应流读取到足够大的字节数组中并在该字节数组中搜索换行符(十进制 10、13),检查调试器
  • @Merceyz:Notepad++ 中正确显示了什么?您的代码收到/写入的文本文件?还是只是原始文本文件?

标签: c# httpwebrequest httpwebresponse


【解决方案1】:

使用ReadLine()读取数据并使用WriteLine()而不是ReadToEnd()WriteToEnd()写入数据。

删除这一行:

_WriteResult.Write(sr3.ReadToEnd());

然后用这个修改你的代码:

string readval = sr3.ReadLine();
while(readval != null)
{
    _WriteResult.WriteLine(readval);
    readval = sr3.ReadLine();
}

更多详情请见the documentation

【讨论】:

  • 你好 Downvoter,用户已经接受了这个作为答案。你能解释一下你投反对票的原因吗?
  • @kumarch1 虽然不是我,但我注意到您的答案格式不正确。现在解决了。 (最明显的问题是您出于某种奇怪的原因发布为代码的链接)
  • @Shadow Wizard 哦..好的。谢谢。没关系。您已修改链接。这就是所需要的。与其否决投票,不如编辑答案(主要是已经接受的答案)。这样它将对我和提出问题的用户都有帮助。谢谢
  • @kumarch1 当然,但也许有人认为代码本身不好,也许它只是一个投反对票的巨魔......我们不知道也不应该对此感到太沮丧。 :)
猜你喜欢
  • 2015-03-12
  • 2021-12-09
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
相关资源
最近更新 更多