我希望能够将任何文件读入字符串,例如记事本可能打开word文件的方式。使用以下代码:
StreamReader sr = new StreamReader(filePath);
text += sr.ReadToEnd();
sr.Close();
在基本的文本文件上工作正常但是在使用它时说一个单词文件我只得到几个奇怪的字符,而在记事本中打开相同的文件会显示整个文件,文本,特殊字符等我正在使用这个作为文件的一部分放入文本框中。基本上我想要在打开记事本中的任何文件时获得相同的输出。我该怎么用呢?
答案 0 :(得分:2)
使用原始问题中的代码并打开文件, 显示整个流(在调试器中查找时) - 问题是大多数这些二进制文件都有空终结符({{ 1}} char)这将导致大多数观众停止阅读流的内容。
如果您移除/转义\0
,您将看到整个流,就像在记事本中一样。
例如:
'\0'
将一个textbox1添加到表单中并亲自查看...您将看到整个流...
答案 1 :(得分:0)
这应该为您提供所需的功能。首先使用
将文件作为byte []读取byte[] data = File.ReadAllBytes(fileName);
然后只用ascii或其他任何东西编码。
string s = Encoding.ASCII.GetString(data);
答案 2 :(得分:-2)
我假设你指的是写字板,它也包含在Windows中,而不是记事本。写字板除了显示基本文本文件外,还知道解析和编辑Word文件(.DOCX,但奇怪的是不是旧的.DOC文件),富文本格式文件(.RTF)和OpenOffice文档(* .ODT) 。这不仅仅是通过打开Word文件并显示其内容来自由 - 在写字板中有很多代码来解析这个二进制数据并正确显示它,更不用说编辑和再次保存的代码。
如果您需要从Word文件中检索数据,则有几个编程选项,从使用Word APIs自动化Word应用程序本身开始。但是,此解决方案在服务器上运行时存在问题,或者如果您需要在没有安装Word的情况下打开它们。
在这种情况下,您还有几个选项。对于具有.DOCX扩展名的2007年后文档,您可以使用System.IO.Packaging命名空间打开DOCX并提取其相关部分,但您可以自行了解XML文件的语法。或者,您可以购买为您执行此操作的第三方库,例如Aspose,我曾与之合作并且没有问题。那里也有其他人。