如何实现分页读取GB级超大型文件的试验操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5026个文字,预计阅读时间需要21分钟。
Conmajia 2012年5月15日使用FileStream类的Seek()和Read()方法完成文件读取,未使用其他作弊手段。在编程过程中,经常与计算机文件读取操作打交道。
©Conmajia 2012
May 15th, 2012
(注:本文使用 FileStream 类的 Seek() 和 Read() 方法完成文件读取,没有用其他的骚东西。)
我们在编程过程中,经常会和计算机文件读取操作打交道。随着计算机功能和性能的发展,我们需要操作的文件尺寸也是越来越大。在 .NET Framework 中,我们一般使用 FileStream 来读取、写入文件流。当文件只有数十 kB 或者数 MB 时,一般的文件读取方式如 Read()、ReadAll() 等应用起来游刃有余,基本不会感觉到太大的延迟。但当文件越来越大,达到数百 MB 甚至数 GB 时,这种延迟将越来越明显,最终达到不能忍受的程度。
通常定义大小在 2GB 以上的文件为超大文件(当然,这个数值会随着科技的进步,越来越大)。对于这样规模的文件读取,普通方法已经完全不能胜任。这就要求我们使用更高效的方法,如内存映射法、分页读取法等。
内存映射(Memory Mapping)
内存映射的方法可以使用下面的 Windows API 实现。
本文共计5026个文字,预计阅读时间需要21分钟。
Conmajia 2012年5月15日使用FileStream类的Seek()和Read()方法完成文件读取,未使用其他作弊手段。在编程过程中,经常与计算机文件读取操作打交道。
©Conmajia 2012
May 15th, 2012
(注:本文使用 FileStream 类的 Seek() 和 Read() 方法完成文件读取,没有用其他的骚东西。)
我们在编程过程中,经常会和计算机文件读取操作打交道。随着计算机功能和性能的发展,我们需要操作的文件尺寸也是越来越大。在 .NET Framework 中,我们一般使用 FileStream 来读取、写入文件流。当文件只有数十 kB 或者数 MB 时,一般的文件读取方式如 Read()、ReadAll() 等应用起来游刃有余,基本不会感觉到太大的延迟。但当文件越来越大,达到数百 MB 甚至数 GB 时,这种延迟将越来越明显,最终达到不能忍受的程度。
通常定义大小在 2GB 以上的文件为超大文件(当然,这个数值会随着科技的进步,越来越大)。对于这样规模的文件读取,普通方法已经完全不能胜任。这就要求我们使用更高效的方法,如内存映射法、分页读取法等。
内存映射(Memory Mapping)
内存映射的方法可以使用下面的 Windows API 实现。

