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

时间:2012-04-20 01:50:35

标签: c# file parsing

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

我必须解析两次......

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

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

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

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

    有一个好的方法还是一个好的类库?

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

1 个答案:

答案 0 :(得分:11)

阅读文件的最快捷,最简单的方法就是:

var file = File.ReadAllBytes(fileName);

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

然而,如果此文件不能很好地适应内存(并且会有81 MB),那么您需要以块的形式执行此操作。如果不需要,我们可以安全地避免这种棘手的讨论。这种情况下的解决方案是:

  1. 如果使用的是.NET 4.0,请使用memory mapped files What are the advantages of memory-mapped files? 中的更多内容)。

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