我正在使用流阅读器来阅读文本文件。
这是.txt文件的内容:
</a> Schools's are a suitable public </a>
当我读到该文字时,我得到了:
<a>Schoolss are a suitable public<a>
正如您所看到的,我没有收到报价。如何在流阅读器中接收特殊字符?
我使用了以下代码:
using (StreamReader reader = new StreamReader(CommonGetSet.FileName, System.Text.Encoding.ASCII))
{
string text = reader.ReadToEnd();
docKeyword = XDocument.Parse(text);
}
答案 0 :(得分:2)
您遇到的问题是您尝试使用xml阅读器加载文本文件,即此部分:
XDocument.Load(reader);
如果您查看此问题:What characters do I need to escape in XML documents?,您会看到其他字符也会被删除/需要转义。
如果您检查调试器中的StreamReader
,您会看到它显示正确的文本,answer by @JinsPeter显示的内容。因此,您需要阅读文本文件,最简单的方法是使用File.ReadAllText
或File.ReadAllLines
,具体取决于您是希望结果分别为string
还是string[]
:
string contents = File.ReadAllText(path);
string[] lines = File.ReadAllLines(path);
但是,如果由于某种原因您确实想要使用StreamReader
,则可以使用ReadToEnd
,ReadLine
或任何其他适当的读取方法直接从流中读取:
using (StreamReader reader = new StreamReader(path))
{
string contents = reader.ReadToEnd();
}
但请注意,StreamReader
方法将从流中的当前位置读取,因此您可能需要自己设置位置。
有关在C#中读取文件的其他方式的列表,请参阅此问题:How to read an entire file to a string using C#?。
答案 1 :(得分:1)
当我在StreamReader
内打印相同的文字时,我得到了'
。
所以问题在于将其写入XML或HTML。尝试解决这个问题,而不是在StreamReader
中找到问题。
using (StreamReader inputStream = new StreamReader(filepath, System.Text.Encoding.UTF8))
{
string line = inputStream.ReadToEnd();
Console.WriteLine(line);
}