2

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

我必须解析它两次...

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

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

我一般使用文件流、缓冲流、二进制读取器和二进制写入器来读写内容。

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

有没有好的方法或好的类库?

注意:不安全的代码是可以的!

4

1 回答 1

13

读取文件最快和最简单的方法很简单:

var file = File.ReadAllBytes(fileName);

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

但是,如果此文件不能很好地放入内存(并且 81 MB 将),那么您将需要分块执行此操作。如果不需要,我们可以安全地避免这种棘手的讨论。在这种情况下,解决方案将是:

  1. 如果使用 .NET 4.0,请使用内存映射文件(更多内容请参见内存映射文件的优势是什么?)。

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

于 2012-04-20T02:57:45.013 回答