How to write data in >4GB file with C++?

前端 未结 4 1847
傲寒
傲寒 2021-02-06 08:24

I\'m trying to write a large file, but ran into a problem.

I use long long for seeking a place to write, but can\'t write file more than 4,2Gb. What I forgot?

Mo

相关标签:
4条回答
  • 2021-02-06 08:56
        fseeko64 (Filename, 0, SEEK_END);
        long size = ftello64 (Filename);
        fclose (Filename);
    

    For accessing the large files , fseek cannot be used , instead have to go for fseeko64();

    0 讨论(0)
  • 2021-02-06 09:07

    There is a nice summary for Linux here:

    http://www.suse.de/~aj/linux_lfs.html

    And more specific detail from RedHat targetting RHEL, these problems are generally for 32-bit applications accessing 64-bit sized files.

    http://people.redhat.com/berrange/notes/largefile.html

    Wikipedia actually has an artile on Large File Support but not really that informative.

    0 讨论(0)
  • 2021-02-06 09:14

    There's a function called _lseeki64() on Win32, and lseek64() on *nix. The iostream library, however, does not wrap them directly, you'll have to retrieve the file descriptor somehow, and do something about buffering.

    0 讨论(0)
  • 2021-02-06 09:15

    Many filesystems do not support files larger than 4GB. In addition, you should consider that your int type may have a range that ends at 2^32, i.e. 4.29497e+09.

    0 讨论(0)
提交回复
热议问题