System.IO.File.ReadAllText(path)不读取html文件

时间:2010-03-15 11:40:32

标签: c# .net winforms file

我想阅读html文件。为此,我使用 System.IO.File.ReadAllText(路径) 。它可以读取所有的html文件但是那里是一个不通过此函数读取的文件。

我也用过

使用(StreamReader reader = File.OpenText(fileName)){    text = reader.ReadToEnd(); 但仍有同样的问题。

原因是什么?那可能是什么解决方案?或者以其他方式阅读文件?

3 个答案:

答案 0 :(得分:1)

我会猜测一下:
该文件包含扩展字符的unicode序列,诊断基于(不匹配)长度。

  

如果我调试它的代码看起来   喜欢   “< \ 0H \0吨\0米\0升\ 0> \ 0℃; \ 0H \ 0E \ 0A \ 0D \ 0> \ 0 \ r \ 0 \ n \ 0℃; \ 0M \ 0E \ 0T \ 0A \ 0   \ 0H \0吨\0吨\ 0P \ 0- \ 0E \ 0Q \ 0U \ 0I \ 0V \ 0 = \ 0 \“\ 0C \ 0°\ 0N \0吨\ 0E \ 0N

对于第一个字符,除了之外的HTML文件的有效开头。在开始时缺少unicode标记可能会损坏该文件。这种损害可能是在写入时造成的,现在不能(简单)修复。

您可以尝试将WebClient.Encoding设置为UTF8(并尝试使用几个ASCII)。

答案 1 :(得分:0)

MsgBox是否显示任何内容?有错误吗? varText.Length显示什么?

string varText = File.ReadAllText(varFile, Encoding.Default); 
MessageBox.Show(varFile + " Text: " + varText + " Lenght: " + varText.Length);

在MessageBox中验证文件的路径是否正确,验证应用程序内部的访问权限是否与使用记事本读取文件时的访问权限相同。

答案 2 :(得分:0)

最近在Google上遇到过这个问题。正确的方法是通过WebClient ...

WebClient client = new WebClient();
String guestMsg = client.DownloadString("C:\\temp\\TheBarGuestDetailsEmail.htm");

File.ReadAllText会在读取时弄乱html,而像'或'这样的字符会搞砸。