我正在编写一个应用程序来读取和解析文件大小为1 KB到200 MB。
我必须解析两次......
提取文件中包含的图像。
解析该图像要提取图像的内容。
我通常使用文件流,缓冲流,二进制阅读器和二进制写入器来读写内容。
现在,我想知道读取文件和提取内容的最快最有效的方法......
有一个好的方法还是一个好的类库?
注意:不安全的代码没问题!
答案 0 :(得分:11)
阅读文件的最快捷,最简单的方法就是:
var file = File.ReadAllBytes(fileName);
将整个文件作为字节数组读入内存。然后,您可以通过它查找内存阵列访问速度所需的内容(也就是说,非常快)。这几乎肯定会比你在阅读时试图处理文件更快。
然而,如果此文件不能很好地适应内存(并且会有81 MB),那么您需要以块的形式执行此操作。如果不需要,我们可以安全地避免这种棘手的讨论。这种情况下的解决方案是:
如果使用的是.NET 4.0,请使用memory mapped files( What are the advantages of memory-mapped files? 中的更多内容)。
如果没有,你需要进行块读取,缓存并保留你认为你需要的内存(为了提高效率)或重新读取它你根本无法将它保存在内存中。这可能会变得混乱和缓慢。