繁体   English   中英

如何将任何文件读入字符串

[英]How can I read any file into a string

我希望能够将任何文件读入字符串,例如记事本打开单词文件的方式。 使用以下代码:

StreamReader sr = new StreamReader(filePath);
text += sr.ReadToEnd();
sr.Close();

在基本文本文件上可以正常工作,但是在说一个单词文件时使用它,我得到的只是几个奇数字符,而在记事本中打开同一文件会显示整个文件,文本,特殊字符等。我将其用作将文件放入文本框。 基本上,我希望获得与在记事本中打开任何文件时获得的输出相同的输出。 我应该改用什么?

使用原始问题中的代码并打开文件, 确实显示了整个流(在调试器中查看时)-问题是这些二进制文件中的大多数都具有空终止符( \\0字符),这将导致大多数观众停止阅读流的内容。

如果您删除/转义'\\0'您将看到整个流,就像在记事本中一样。

例如:

string filePath = @"c:\windows\system32\calc.exe";
StreamReader sr = new StreamReader(filePath);
string text = sr.ReadToEnd();
sr.Close();

textBox1.Text = text.Replace('\0', ' ');

将textbox1添加到表单中,然后亲自查看...,您将看到整个流...

这应该为您提供所需的功能。 首先使用读取文件为byte []

byte[] data = File.ReadAllBytes(fileName);

然后只需使用ascii或其他方式对其进行编码。

string s = Encoding.ASCII.GetString(data);

我假设您指的是写字板,而不是记事本,它也包含在Windows中。 写字板除了显示基本的文本文件外,还知道解析和编辑Word文件(.DOCX,但奇怪的是,没有旧的.DOC文件),富文本格式文件(.RTF)和OpenOffice文档(* .ODT) 。 这不仅仅是通过打开Word文件并显示其内容来实现的-写字板中有很多代码可以解析此二进制数据并正确显示它们,更不用说再次编辑并保存代码了。

如果您需要从Word文件中检索数据,则有几种编程选项,从使用Word API自动化Word应用程序本身开始。 但是,此解决方案对于在服务器上运行,或者需要在未安装Word的地方打开它们有问题。

在这种情况下,您还有几种选择。 对于具有.DOCX扩展名的2007年后文档,可以使用System.IO.Packaging命名空间打开DOCX并提取其相关部分,但是您需要了解其中的XML文件的语法。 或者,您可以购买一个为您执行此操作的第三方库,例如Aspose ,我与之合作过也很好。 还有其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM