最快的阅读二进制文件读写

Wri*_*ick 2 c# parsing file

我正在编写一个应用程序来读取和解析文件大小为1 KB到200 MB.

我要解析两次......

  1. 提取文件中包含的图像.

  2. 解析该图像提取图像的内容.

我通常使用文件流,缓冲流,二进制读取器和二进制写入器来读取和写入内容.

现在,我想知道读取文件和提取内容的最快,最有效的方法......

有好的方法还是好的班级图书馆?

注意:不安全的代码没问题!

yam*_*men 11

读取文件的最快速最简单的方法是:

var file = File.ReadAllBytes(fileName);
Run Code Online (Sandbox Code Playgroud)

这会将整个文件作为字节数组读入内存.然后,您可以通过它查找内存阵列访问速度所需的内容(也就是说,非常快).这几乎肯定比在阅读时尝试处理文件更快.

但是,如果此文件不适合内存(并且将为81 MB),那么您将需要以块的形式执行此操作.如果不需要,我们可以安全地避免这种棘手的讨论.这种情况下的解决方案是:

  1. 如果使用.NET 4.0,请使用内存映射文件(更多内容映射文件哪些优点?).

  2. 如果没有,你将需要块读取,缓存并保留你认为你需要的内存(为了提高效率)或重新读取它你根本无法将其保存在内存中.这可能会变得混乱和缓慢.