【发布时间】:2009-10-13 15:17:56
【问题描述】:
我正在开发一个应用程序,我希望能够在整个驱动器中搜索正则表达式。我更喜欢在 c# 中执行此操作,但我可以调用其他语言。有没有什么简单的方法可以从头到尾查找驱动器上的所有二进制数据?
【问题讨论】:
-
您是在搜索文件名还是文件内容?
我正在开发一个应用程序,我希望能够在整个驱动器中搜索正则表达式。我更喜欢在 c# 中执行此操作,但我可以调用其他语言。有没有什么简单的方法可以从头到尾查找驱动器上的所有二进制数据?
【问题讨论】:
【讨论】:
AFAIK 没有简单的方法可以对原始二进制数据执行此操作(您需要直接控制磁盘)。
如果基于文件足以枚举所有文件,则打开它们以进行二进制共享读取(捕获受系统保护的异常)然后查找数据应该很简单。但是这会很慢,因为枚举和打开所有文件需要一些时间。
【讨论】:
我不认为 C# 可以读取操作系统所在驱动器的所有文件/数据,因为操作系统会锁定一些文件。
您可以使用 System.IO 命名空间来枚举所有文件,然后逐字节逐一扫描它们,这显然需要很长时间。
【讨论】:
你真的想这样做吗?你打算怎么搜索:
等等?每种文件类型都会以不同的方式代表您正在搜索的字符串。
【讨论】:
This article 展示了如何直接从磁盘读取数据。他们在 C++ 中所做的一切都可以使用 PInvoke 在 C# 中完成。
【讨论】: