c处理大文件

rom*_*joe 6 c large-files

我需要解析一个大小可能很多gbs的文件.我想在C中这样做.任何人都可以建议任何方法来实现这一目标吗?

我需要打开和解析的文件是我从mac的硬盘驱动器获取的硬盘驱动器转储.但是,我打算在64位Ubuntu 10.04中运行我的程序.同时考虑到大文件大小,方法越优化越好.

RBe*_*eig 6

在 *nix 和 Windows 上,都有对 I/O 例程的扩展,可以支持大于 2GB 或 4GB 的文件大小。自然,底层文件系统也必须支持这么大的文件。例如,在 Windows 上,NTFS 可以,但 FAT 不行。这通常称为“大文件支持”。

对这些目的最重要的两个例程是fseek()ftell()以便您可以对整个文件进行随机访问。否则,只要底层 OS 和 stdio 实现支持大文件,普通fopen()fread()朋友就可以对任意大小的文件进行顺序访问。


vrd*_*dhn 0

根据乔姆斯基级别,可能有几个免费和商业工具包来创建文件格式的解析器。我认为您认为遇到的真正问题是如何“处理”几 GB 的数据。

您希望内存中的所有数据同时存在吗?
一种方法是在不使用时将文件的一部分写到磁盘上的临时文件中。结构体的简单 fread / fwrite 以及一些巧妙的引用计数“按需”加载和写入可以做到这一点,