【发布时间】:2011-07-08 18:16:03
【问题描述】:
我的数据库中存储了一些 .doc 二进制文件,现在我想全部搜索它们(不将它们转换为 .doc)以查看哪个包含例如“hello”一词。
有没有办法在二进制文件中进行这种搜索?
【问题讨论】:
标签: vb.net file search binary ms-word
我的数据库中存储了一些 .doc 二进制文件,现在我想全部搜索它们(不将它们转换为 .doc)以查看哪个包含例如“hello”一词。
有没有办法在二进制文件中进行这种搜索?
【问题讨论】:
标签: vb.net file search binary ms-word
您可以选择使用商业工具。 Aspose.Words 可以从流中加载文档,并具有各种在文档中查找文本的方法。
如果您有来自数据库的流,那么您的代码将如下所示:
Aspose.Words.Document doc = new Aspose.Words.Document(streamObjectFromDatabase);
if (doc.GetText().ToLower().Contains("hello world"))
MessageBox.Show("Hello World exists");
注意:这个工具的好处是它不需要安装 Word 对象,它可以处理内存中的流。
【讨论】:
据我所知,并非没有很多痛苦。根据Wikipedia 的说法,微软在过去几年中终于发布了.doc 规范。因此,如果您有时间,您可以根据规范创建一个解析器,假设您的所有文档都采用相同版本的 .doc 格式。
当然,您可以在所有二进制数据中搜索您要查找的文本,假设实际文本存储为纯文本。但是即使这个假设是正确的,你怎么能确定你找到的纯文本是实际的文档文本,而不是一些也以纯文本形式存储的文档元数据呢?而且二进制数据与您的文本模式匹配的可能性总是很小。
如果您可以使用 Word 库,我会走这条路。如果没有,国产解析器可能是您最不坏的选择。
【讨论】: