我需要使用C访问大于2GB的文件。在程序的一次运行过程中,将从该文件读取可变数量的字节并保存下一个位置的位置。在程序的下一次运行过程中,读取文件位置并从该位置开始读取大量字节。在C中访问大文件
复杂的是,有时文件可能会被压缩,通过复制它到一个新的文件,更少的任何字节已经被读取(我认为复制是唯一的方法来做到这一点)。以这种方式移除的字节数也将被保存。
我需要知道从原始开始的文件的当前位置与另一个文件进行同步。这应该很容易,因为它只是(current_offset + deleted_bytes)。
不容易的原因是fseek只使用长整型索引,它将文件限制为2GB,fsetpos使用位置索引的fpos_t结构,该结构不是数字,也不能来回转换到一个。我不知道有什么方法使用长整型索引来定位文件,这将是理想的解决方案。
我该怎么办?
哪个平台? 'ftello()'和'fseeko()'可能是一个选项。 – 2012-01-16 02:51:14
ftello和fseeko将符合POSIX.1标准,但> 2GB也是一个依赖于文件系统的问题。 – 2012-01-16 02:55:40