2010-03-15 137 views
1

我想读的HTML file.And我用System.IO.File.ReadAllText(路径)。它可以读取所有的html文件,但有一个文件不通过这个函数读取。System.IO.File.ReadAllText(路径)不读取HTML文件

我已经使用(StreamReader的读者= File.OpenText(文件名))也用于

{ 文本= reader.ReadToEnd();但仍然有同样的问题。

究竟是什么原因可以在那里?对此,解决方案有哪些?或者其他方式来读取文件?

+0

也许这是一个二进制文件,你需要使用'ReadAllBytes'来代替? – 2010-03-15 11:41:53

+0

请给出一些细节。阅读该文件是否会引发异常?如果不是,你怎么知道它没有被完全读取? – 2010-03-15 11:41:54

+0

当你用记事本打开文件时你能看到任何东西? – MadBoy 2010-03-15 11:43:20

回答

1

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

,如果我调试了它的代码看起来 像 “< \ 0H \0吨\0米\0升\ 0> \ 0 < \ 0H \ 0E \ 0A \ 0D \ 0> \ 0 \ r \ 0 \ n \ 0 < \ 0M \ 0E \ 0T \ 0A \ 0 \ 0h \ 0t \ 0t \ 0p \ 0- \ 0e \ 0q \ 0u \ 0i \ 0v \ 0 = \ 0 \“\ 0C \ 0o \ 0N \0吨\ 0E \ 0N

这是一个HTML文件,除了的第一个字符一个有效的开端。该文件可能由于在开始时丢失了unicode标记而被损坏。这种损坏可能是由于写入造成的,现在不容易修复。

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

+0

@Henk Holterman ..只有一个文件可能被损坏,但是有两个文件显示为<\ 0h \ 0t \ 0m \ 0l \ 0> \ 0 <\ 0h \ 0e \ 0a \ 0d \ 0> \ 0 \ r \ 0 \ n \ 0 <\ 0M \ 0E \ 0T \ 0A \ 0 \ 0h \ 0t \ 0t \ 0p \ 0- \ 0e \ 0q \ 0u \ 0i \ 0v \ 0 = \ 0 \“\ 0C \ 0o \ 0n \ 0t \ 0e \ 0n。 无法读取这两个文件 – Harikrishna 2010-03-15 12:58:09

+0

请使用ReadAllBytes(它工作)并将前10个字节作为十六进制发布 – 2010-03-15 13:04:00

+0

为什么不能损坏另一个文件? – 2010-03-15 13:06:31

0

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

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

验证在MessageBox中的文件路径是否正确,确认您的应用程序内的访问权限是一样的,如果你会读用记事本文件。

+0

@ MadBoy..In messagebox中只显示文本或长度的路径,只有一个其他符号显示路径为<。 – Harikrishna 2010-03-15 12:03:03

+0

@MadBoy ..在消息框中显示的路径是正确的。 – Harikrishna 2010-03-15 12:04:27

+0

你可以发布html文件吗? – MadBoy 2010-03-15 12:39:01

0

最近在谷歌上遇到这个问题。做正确的方法是通过Web客户端...

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

File.ReadAllText会陷入困境,当它做一个阅读HTML和字符,如£或“会搞的一团糟。